Boxc Credentials API

The Credentials resource allows users to store their own carrier account secrets securely. This gives users the ability to reuse their credentials without providing actual secret values in every single shipment request. There can be multiple secret values stored in a single credential resource. Supported carriers and parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section. **Note:** All secret params that are stored by BoxC are encrypted at the storage layer using the Advanced Encryption Standard (AES) algorithm — AES-256. **Important:** Once a credential resource is created, it is not possible to see the secret values for security reasons. **Important:** If the secret values have to be updated for any reason, we recommend updating your existing Credential resource instead of creating a new one. Doing so will ensure that secret values are always up to date for previously created labels with the same Credential resource and event tracking is not affected adversely.

Operations 5

GET /credentials GET /credentials #
POST /credentials POST /credentials #
GET /credentials/{id} GET /credentials/{id} #
PUT /credentials/{id} PUT /credentials/{id} #
DELETE /credentials/{id} DELETE /credentials/{id} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/boxc-credentials-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

boxc-credentials-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  x-logo:
    url: https://storage.googleapis.com/boxc_cdn/public/boxc-logo.png
    altText: BoxC
  title: BoxC CalculateDuty Credentials API
  version: '1.123'
  description: 'A simple but powerful logistics API that drives international ecommerce by utilizing a single integration with access to dozens of carriers and global markets. BoxC can complete every leg or only select steps of a shipment''s journey on your behalf with our routing engine.

    '
servers:
- url: https://api.boxc.com/v1
tags:
- name: Credentials
  x-displayName: Credentials
  description: 'The Credentials resource allows users to store their own carrier account secrets securely. This gives users the ability to reuse their credentials without providing actual secret values in every single shipment request. There can be multiple secret values stored in a single credential resource. Supported carriers and parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section.


    **Note:** All secret params that are stored by BoxC are encrypted at the storage layer using the Advanced Encryption Standard (AES) algorithm — AES-256.


    **Important:** Once a credential resource is created, it is not possible to see the secret values for security reasons.


    **Important:** If the secret values have to be updated for any reason, we recommend updating your existing Credential resource instead of creating a new one. Doing so will ensure that secret values are always up to date for previously created labels with the same Credential resource and event tracking is not affected adversely.'
paths:
  /credentials:
    get:
      tags:
      - Credentials
      summary: GET /credentials
      description: Retrieves a paginated list of credentials.
      operationId: getCredentials
      parameters:
      - in: query
        name: limit
        description: The number of results to return.
        required: false
        schema:
          type: integer
          default: 50
          maximum: 100
          minimum: 50
      - in: query
        name: order
        description: The sort order of the results.
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - in: query
        name: page_token
        description: Used for selecting the page after the initial query.
        required: false
        schema:
          type: string
          default: null
      - in: query
        name: sort
        description: The property to sort by.
        required: false
        schema:
          type: string
          enum:
          - id
          - carrier
          default: id
      security:
      - JWT:
        - read_credentials
      x-codeSamples:
      - lang: cURL
        label: cURL
        source: "curl -H \"Authorization: Bearer <YOUR TOKEN>\" \\\n  -H \"Accept: application/json\" \\\n  https://api.boxc.com/v1/credentials\\?limit=2\\&order=desc\\&sort=id\n"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  credentials:
                    type: array
                    items:
                      $ref: '#/components/schemas/Credential'
                  next_page:
                    type: string
                    description: Page token. Set by the system.
                    example: ZGF0ZV9lbmQ9MjAyMy0wNy0yOCZsaW1pdD01MCZvcmRlcj1kZXNjJnBhZ2U9MSZsYXN0X2lkPTE1Mzg0Nw
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              examples:
                invalidToken:
                  summary: Bad Request
                  description: Invalid page token
                  value:
                    code: 1025
                    message: Invalid page token
                    errors:
                    - Invalid page token
        '401':
          $ref: '#/components/schemas/Unauthorized'
        '403':
          $ref: '#/components/schemas/Forbidden'
        '429':
          $ref: '#/components/schemas/RateLimit'
    post:
      tags:
      - Credentials
      summary: POST /credentials
      description: Creates a credential.
      operationId: addCredential
      security:
      - JWT:
        - write_credentials
      x-codeSamples:
      - lang: cURL
        label: cURL
        source: "curl -X POST https://api.boxc.com/v1/credentials \\\n  -H \"Authorization: Bearer <YOUR TOKEN>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"credential\": {\n    \"carrier\": \"DeutschePost\",\n    \"params\": {\n      \"gkp_username\": \"Username\",\n      \"gkp_password\": \"Password\",\n      \"dp_api_key\": \"TEST\",\n      \"dp_api_secret\": \"TEST\",\n      \"ekp\": \"1234567890\",\n      \"contract_participation\": \"AA\"\n    }\n  }\n}'\n"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                credential:
                  $ref: '#/components/schemas/Credential'
              required:
              - credential
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    $ref: '#/components/schemas/Credential'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              examples:
                validation:
                  summary: Validation error
                  description: The request schema is invalid.
                  value:
                    code: 1000
                    message: 'Validation Error. /credential: The required properties (carrier) are missing'
                    status: error
                    errors:
                    - '/credential: The required properties (carrier) are missing'
        '401':
          $ref: '#/components/schemas/Unauthorized'
        '403':
          $ref: '#/components/schemas/Forbidden'
        '429':
          $ref: '#/components/schemas/RateLimit'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
              examples:
                internalServerError:
                  summary: Internal Server Error
                  description: Credential could not be created
                  value:
                    code: 1453
                    message: Credential could not be created
                    errors:
                    - Credential could not be created
  /credentials/{id}:
    get:
      tags:
      - Credentials
      summary: GET /credentials/{id}
      description: Retrieves a credential.
      operationId: getCredentialsById
      security:
      - JWT:
        - read_credentials
      parameters:
      - name: id
        in: path
        description: The credential ID
        required: true
        schema:
          type: integer
      x-codeSamples:
      - lang: cURL
        label: cURL
        source: "curl -H \"Authorization: Bearer <YOUR TOKEN>\" \\\n  -H \"Accept: application/json\" \\\n  https://api.boxc.com/v1/credentials/{id}\n"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    $ref: '#/components/schemas/Credential'
        '401':
          $ref: '#/components/schemas/Unauthorized'
        '403':
          $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              examples:
                notFound:
                  summary: Not Found
                  description: Credential not found
                  value:
                    code: 1450
                    message: Credential not found
                    errors:
                    - Credential not found
        '429':
          $ref: '#/components/schemas/RateLimit'
    put:
      tags:
      - Credentials
      summary: PUT /credentials/{id}
      description: Updates a credential.
      operationId: updateCredential
      security:
      - JWT:
        - write_credentials
      parameters:
      - name: id
        in: path
        description: The credential ID
        required: true
        schema:
          type: integer
      x-codeSamples:
      - lang: cURL
        label: cURL
        source: "curl -X PUT https://api.boxc.com/v1/credentials/{id} \\\n  -H \"Authorization: Bearer <YOUR TOKEN>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"credential\": {\n    \"carrier\": \"DeutschePost\",\n    \"params\": {\n      \"gkp_username\": \"Username\",\n      \"gkp_password\": \"Password\",\n      \"dp_api_key\": \"TEST\",\n      \"dp_api_secret\": \"TEST\",\n      \"ekp\": \"1234567890\",\n      \"contract_participation\": \"AA\"\n    }\n  }\n}'\n"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialPut'
      responses:
        '200':
          description: Success OK.
          content:
            application/json:
              schema:
                type: object
                properties:
                  credential:
                    $ref: '#/components/schemas/Credential'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              examples:
                validation:
                  summary: Validation error
                  description: The request schema is invalid.
                  value:
                    code: 1000
                    message: 'params: Params are not valid'
                    status: error
                    errors:
                    - 'params: Params are not valid'
                cannotUpdate:
                  summary: Bad Request Credential
                  description: Credential can't be updated
                  value:
                    code: 1451
                    message: Credential can't be updated
                    errors:
                    - Credential can't be updated
                cannotChangeCarrier:
                  summary: Bad Request Carrier
                  description: Carrier can't be changed
                  value:
                    code: 1454
                    message: Carrier can't be changed
                    errors:
                    - Carrier can't be changed
        '401':
          $ref: '#/components/schemas/Unauthorized'
        '403':
          $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              examples:
                notFound:
                  summary: Not Found
                  description: Credential not found
                  value:
                    code: 1450
                    message: Credential not found
                    errors:
                    - Credential not found
        '429':
          $ref: '#/components/schemas/RateLimit'
    delete:
      tags:
      - Credentials
      summary: DELETE /credentials/{id}
      description: Deletes a credential.
      operationId: deleteCredential
      security:
      - JWT:
        - write_credentials
      parameters:
      - name: id
        in: path
        description: The credential ID
        required: true
        schema:
          type: integer
      x-codeSamples:
      - lang: cURL
        label: cURL
        source: "curl -X DELETE https://api.boxc.com/v1/credentials/{id} \\\n  -H \"Authorization: Bearer <YOUR TOKEN>\" \\\n  -H \"Content-Type: application/json\"\n"
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/schemas/Unauthorized'
        '403':
          $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
              examples:
                notFound:
                  summary: Not Found
                  description: Credential not found
                  value:
                    code: 1450
                    message: Credential not found
                    errors:
                    - Credential not found
        '429':
          $ref: '#/components/schemas/RateLimit'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
              examples:
                internalServerError:
                  summary: Internal Server Error
                  description: Credential can't be deleted
                  value:
                    code: 1452
                    message: Credential can't be deleted
                    errors:
                    - Credential can't be deleted
components:
  schemas:
    internal-server-error:
      type: object
      summary: Internal Server Error
      description: Processing Error
      properties:
        code:
          description: Error code. Refer to the list of [Errors](/#tag/Errors).
          type: integer
        message:
          description: Error message explaining the code.
          type: string
        status:
          type: string
          enum:
          - error
          example: error
        errors:
          description: Displays processing error.
          type: array
          minItems: 1
          maxItems: 1
          items:
            type: string
    rate-limit:
      description: Too Many Requests
      content:
        application/json:
          schema:
            type: object
            summary: Too Many Requests
            description: Error for too many requests in a given time frame. See [Rate Limits](/#tag/RateLimit) for more information.
            properties:
              code:
                description: Error code. Refer to the list of [Errors](/#tag/Errors).
                type: integer
              message:
                description: Error message explaining the code.
                type: string
              status:
                type: string
                enum:
                - error
                example: error
              errors:
                description: Displays processing error.
                type: array
                minItems: 1
                maxItems: 1
                items:
                  type: string
          examples:
            rateLimit:
              summary: Too Many Requests
              description: Too many requests. Please wait before trying again.
              value:
                code: 1015
                message: Too many requests. Please wait before trying again.
                errors:
                - Too many requests. Please wait before trying again.
    RateLimit:
      $ref: '#/components/schemas/rate-limit'
    forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            type: object
            summary: Forbidden
            description: Error relating to insufficient permissions for a resource
            properties:
              code:
                description: Error code. Refer to the list of [Errors](/#tag/Errors).
                type: integer
              message:
                description: Error message explaining the code.
                type: string
              status:
                type: string
                enum:
                - error
                example: error
              errors:
                description: Displays processing error.
                type: array
                minItems: 1
                maxItems: 1
                items:
                  type: string
          examples:
            revoked:
              summary: Forbidden Authorization Revoked
              description: 'Forbidden: Authorization revoked'
              value:
                code: 1008
                message: 'Forbidden: Authorization revoked'
                errors:
                - 'Forbidden: Authorization revoked'
            scope:
              summary: Forbidden Scope
              description: 'Forbidden: Missing required scope'
              value:
                code: 1009
                message: 'Forbidden: Missing required scope'
                errors:
                - 'Forbidden: Missing required scope'
    credential-put-request:
      type: object
      properties:
        credential:
          type: object
          properties:
            carrier:
              description: The carrier code
              type: string
              example: DHLeC
            params:
              description: The carrier specific parameters. Supported parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section.
              type: object
              example:
                client_id: 1223asdadaa12
                client_secret: '12312312312312'
          required:
          - carrier
          - params
      required:
      - credential
    bad-request:
      type: object
      summary: Bad Request
      description: Validation error with the request
      properties:
        code:
          description: Error code. Refer to the list of [Errors](/#tag/Errors).
          type: integer
        message:
          description: Error message explaining the code.
          type: string
        status:
          type: string
          enum:
          - error
          example: error
        errors:
          description: Lists validation errors with the schema or the resource being operated on.
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
    Forbidden:
      $ref: '#/components/schemas/forbidden'
    Credential:
      $ref: '#/components/schemas/credential'
    BadRequest:
      $ref: '#/components/schemas/bad-request'
    not-found:
      type: object
      summary: Not Found
      description: Object not found or not owned by the user
      properties:
        code:
          description: Error code. Refer to the list of [Errors](/#tag/Errors).
          type: integer
        message:
          description: Error message explaining the code.
          type: string
        status:
          type: string
          enum:
          - error
          example: error
        errors:
          description: Duplicate of the error message
          type: array
          items:
            type: string
    Unauthorized:
      $ref: '#/components/schemas/unauthorized'
    CredentialPut:
      $ref: '#/components/schemas/credential-put-request'
    InternalServerError:
      $ref: '#/components/schemas/internal-server-error'
    unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            summary: Unauthorized
            description: Lack of valid authentication credentials for the resource
            properties:
              code:
                description: Error code. Refer to the list of [Errors](/#tag/Errors).
                type: integer
              message:
                description: Error message explaining the code.
                type: string
              status:
                type: string
                enum:
                - error
                example: error
              errors:
                description: Displays processing error.
                type: array
                minItems: 1
                maxItems: 1
                items:
                  type: string
          examples:
            accessToken:
              summary: Invalid access token
              description: Invalid access token
              value:
                code: 1005
                message: Invalid access token
                errors:
                - Invalid access token
    credential:
      type: object
      properties:
        id:
          description: The credential ID.
          type: integer
          example: 100020
          readOnly: true
        user_id:
          description: The user ID.
          type: integer
          example: 12006
          readOnly: true
        carrier:
          description: The carrier for this credential. Carriers that support parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section.
          type: string
          example: DeutschePost
        params:
          description: The carrier specific parameters. Supported parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section.
          type: object
        updated:
          description: The datetime in UTC the credential was updated.
          type: string
          format: datetime
          example: '2024-06-01 19:04:51'
          readOnly: true
        created:
          description: The datetime in UTC the credential was created.
          type: string
          format: datetime
          example: '2024-05-20 10:11:12'
          readOnly: true
        deleted:
          description: The datetime in UTC the credential was deleted.
          type: string
          format: datetime
          example: '2024-06-20 04:22:18'
          readOnly: true
      required:
      - carrier
      - params
    NotFound:
      $ref: '#/components/schemas/not-found'
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerScheme: JWT
      in: header
      description: All operations require a JSON Web Token after completing an [OAuth2 flow](#tag/Authentication).
    PrivilegedClient:
      type: http
      scheme: bearer
      bearerScheme: JWT
      description: Some clients require special privileges to use operations. No additional scope is needed.
x-servers:
- url: https://api.boxc.com/v1
x-tagGroups:
- name: Overview
  tags:
  - Introduction
  - Authentication
  - RateLimit
  - Paginate
  - Changelog
- name: Operations
  tags:
  - CalculateDuty
  - Classify
  - Invoices
  - Users
  - ValidateAddress
  - Webhooks
- name: Shipping
  tags:
  - Credentials
  - CustomsProducts
  - EntryPoints
  - Estimate
  - Labels
  - Manifests
  - Overpacks
  - Shipments
  - Track
- name: Fulfillment
  tags:
  - Inbound
  - Orders
  - Products
  - Shops
  - Warehouses
- name: Returns
  tags:
  - Reshipments
  - Returns
- name: Data
  tags:
  - CarrierCredentials
  - DangerousGoods
  - Errors
  - Languages
  - CarrierParameters
  - ReturnsProcess
  - TrackingEvents