Emerge · Authentication Profile

Emerge Authentication

Authentication

Emerge secures its APIs with http across 1 declared security scheme, as derived from its OpenAPI definitions.

freightlogisticstransportationsupply-chainprocurementtruckingfreight-marketplacetransportation-managementshippingrate-benchmarkingwebhooksb2b-marketplace
Methods: http Schemes: 1 OAuth flows: API key in:

Security Schemes

BearerAuth http
scheme: bearer

Source

Authentication Profile

Raw ↑
generated: '2026-08-12'
method: searched
source: openapi/emerge-carrier-api-openapi.yml, openapi/emerge-public-api-openapi.yml
docs: https://api-docs.emergemarket.io/
summary:
  types:
  - http
  api_key_in: []
  oauth2_flows: []
  bearer_only: true
  note: >-
    Both Emerge APIs use a single `http`/`bearer` security scheme (`BearerAuth`). There is no
    apiKey scheme, no OAuth 2.0 securityScheme, no OpenID Connect, and no mTLS. Tokens are minted at
    proprietary login endpoints rather than an RFC 6749 token endpoint, and no scopes exist — a
    token is all-or-nothing for the API it belongs to. There is consequently no `scopes/` artifact
    for this provider.
schemes:
- name: BearerAuth
  type: http
  scheme: bearer
  sources:
  - openapi/emerge-carrier-api-openapi.yml
  - openapi/emerge-public-api-openapi.yml
  header: 'Authorization: Bearer <token>'
token_acquisition:
- api: Emerge Public API (Shipper API)
  operation: POST /auth/login
  security: "none (the operation declares `security: []`)"
  credentials:
    kind: resource-owner password
    fields: [user_name, password]
    required: [user_name, password]
    note: >-
      The caller supplies an Emerge shipper user's own platform username and password. There is no
      machine identity for the Shipper API — an integration authenticates as a human user account.
  response_schema: 200_authentication_response
  rate_limit: up to 20 requests per second, and lower during high-volume periods
  errors: [403, 429, 500]
- api: Emerge Public API (Shipper API)
  operation: POST /auth/refresh
  purpose: refresh an existing shipper access token without resending the password
  errors: [400, 403]
- api: Emerge Carrier API
  operation: POST /auth/login/client_credentials
  security: "none (the operation declares `security: []`)"
  credentials:
    kind: client credentials
    fields: [client id, client secret]
    note: >-
      Issued to a Capacity/Integration Provider during Capacity Link onboarding, alongside the
      `relationship_identifiers` values that appear on rate_request events. Request access via
      https://emergetech.zendesk.com/hc/en-us/requests/new?ticket_form_id=11470751569179
  response_schema: 200_client_credential_authentication_response
  errors: [400, 403]
token_properties:
  scopes: none
  expiry: not documented in the OpenAPI response description
  refresh: shipper only (POST /auth/refresh); no refresh path documented for carrier tokens
  revocation: not documented
  introspection: not documented
  environment_binding:
    mechanism: separate base host (api.emergemarket.io vs demo-api.emergemarket.dev)
    key_prefix: none
    note: >-
      A token carries no visible marker of which environment it belongs to. Callers must track that
      themselves — see sandbox/emerge-sandbox.yml.
callback_authentication:
  surface: webhooks
  mechanism: HTTP Basic on the subscriber's own endpoint
  fields: [authentication.is_enabled, authentication.username, authentication.password]
  signature: none
  note: >-
    Emerge presents subscriber-supplied Basic credentials when delivering events. There is no HMAC
    signature header, so TLS plus Basic is the entire verification story for inbound events. The
    credentials are carried in cleartext in the webhook_object request/response shape.
  detail: asyncapi/emerge-webhooks.yml
discovery:
  openid_configuration: absent (404 on every host)
  oauth_authorization_server: absent (404 on every host)
  oauth_protected_resource: absent (404 on every host)
  detail: well-known/emerge-well-known.yml
gaps:
- Shipper API integrations authenticate as a named human user, not a service principal.
- No scopes or least-privilege boundary between read and write operations.
- Token lifetime, revocation and introspection are undocumented.
- Webhook deliveries are not signed.