Skip to main content

Authentication

The Integration API uses API Key/Secret Key authentication with JWT-based access tokens and refresh tokens.

Authentication Flow

  1. Get API Credentials: Obtain your API Key and Secret Key from the Brokerage platform
  2. Authenticate: Use your credentials to get an access token and refresh token
  3. Use Access Token: Include the access token in the Authorization header for API requests
  4. Refresh Token: When the access token expires, use the refresh token to get a new access token

Authenticate

Authenticate with your API key and secret key to receive access and refresh tokens.

Endpoint: POST /api/v1/integration/auth/authenticate

Request

You can send credentials either in the request body or as headers:

Required Header:

X-Target-Server: authentication

Option 1: Request Body

{
"api_key": "your-api-key",
"secret_key": "your-secret-key"
}

Option 2: Headers

Api-Key: your-api-key
Api-Secret: your-secret-key

Example cURL Request

Option 1: Request Body

curl -X POST https://<base-url>/api/v1/integration/auth/authenticate \
-H "Content-Type: application/json" \
-H "X-Target-Server: authentication" \
-d '{
"api_key": "your-api-key",
"secret_key": "your-secret-key"
}'

Option 2: Headers

curl -X POST https://<base-url>/api/v1/integration/auth/authenticate \
-H "X-Target-Server: authentication" \
-H "Api-Key: your-api-key" \
-H "Api-Secret: your-secret-key"

Response

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "abc123def456...",
"token_type": "Bearer",
"expires_in": 3600,
"expires_at": "2025-01-03T12:00:00Z"
}

Response Fields

  • access_token: JWT token for API authentication (valid for 1 hour)
  • refresh_token: Token to refresh the access token (valid for 7 days)
  • token_type: Always "Bearer"
  • expires_in: Access token expiration time in seconds (3600 = 1 hour)
  • expires_at: Access token expiration timestamp

Using the Access Token

Include the access token in the Authorization header for all protected endpoints. Also include the X-Target-Server header:

Authorization: Bearer <access_token>
X-Target-Server: integration

Example cURL Request

curl -X GET https://<base-url>/api/v1/integration/<endpoint> \
-H "Authorization: Bearer <access_token>" \
-H "X-Target-Server: integration"

Note: Authentication endpoints (/auth/authenticate and /auth/refresh) use X-Target-Server: authentication, while all other endpoints use X-Target-Server: integration.

Refresh Token

Refresh your access token when it expires.

Endpoint: POST /api/v1/integration/auth/refresh

Request

Required Header:

X-Target-Server: authentication
{
"refresh_token": "abc123def456..."
}

Example cURL Request

curl -X POST https://<base-url>/api/v1/integration/auth/refresh \
-H "Content-Type: application/json" \
-H "X-Target-Server: authentication" \
-d '{
"refresh_token": "abc123def456..."
}'

Response

Same format as the authenticate endpoint, returning a new access token and the same refresh token.

Error Responses

Invalid Credentials (401)

{
"error": {
"code": "INVALID_API_KEY",
"message": "invalid api key or secret"
}
}

Expired Refresh Token (401)

{
"error": {
"code": "REFRESH_TOKEN_EXPIRED",
"message": "refresh token expired"
}
}

Webhook Authentication Types

When configuring webhooks (for markets, distributors, etc.), you can specify the authentication type using the type field in the authentication object.

Authentication Type Values

TypeValueDescription
Basic1HTTP Basic Authentication using username and password
Token2Token-based authentication

Example: Basic Authentication

{
"authentication": {
"type": 1,
"username": "user",
"password": "pass"
}
}

Example: Token Authentication

{
"authentication": {
"type": 2,
"token": "your-token-here"
}
}