# Update freight provider account credentials

Replace the credentials stored for a freight provider account — the mechanism for rotating a client secret without disconnecting.

The new credentials are verified against the provider before they replace the stored pair, so a failed verification leaves the existing connection working. The connection's nickname and account number are untouched.

Endpoint: PUT /v1/freight/provider_accounts/{freight_provider_account_id}/credentials
Version: 1.1.202604070904
Security: api_key

## Path parameters:

  - `freight_provider_account_id` (string, required)
    The identifier of the freight provider account whose credentials to replace.
    Example: "se-28529731"

## Request fields (application/json):

  - `client_id` (string, required)
    The new OAuth client ID issued by the freight provider.
    Example: "my-new-client-id"

  - `client_secret` (string, required)
    The new OAuth client secret issued by the freight provider.
    Example: "my-new-client-secret"

## Response 200 fields (application/json):

  - `freight_provider_account_id` (string)
    The identifier of the freight provider account. Pass it as freight_provider_account_id when quoting, booking, or tracking.
    Example: "se-28529731"

  - `freight_provider_code` (string)
    The code of the freight provider, such as UNISHIPPERS or WWEX. This is the same value returned as freight_provider_code on quotes, shipments, and tracking.
    Example: "UNISHIPPERS"

  - `nickname` (string,null)
    The name given to the connection when it was set up, or null when it has none.
    Example: "Unishippers - Midwest"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, or the ShipEngine API itself.
    Enum: "carrier", "order_source", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "file_not_found", "shipping_rule_not_found", "service_not_determined", "no_rates_returned", "funding_source_registration_in_progress", "insurance_failure", "funding_source_missing_configuration", "funding_source_error", "freight_connection_inactive", "freight_provider_id_required", "freight_provider_already_connected", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.carrier_id` (string)
    A string that uniquely identifies the carrier that generated the error.
    Example: "se-28529731"

  - `errors.carrier_code` (string)
    The name of the shipping carrier that generated the error, such as fedex, dhl_express, stamps_com, etc.
    Example: "dhl_express"

  - `errors.field_name` (string)
    The name of the field that caused the error
    Example: "shipment.ship_to.phone_number"


