Skip to main content
POST
Exchange credentials for JWT token

Authorizations

X-Signature
string
header
required

HMAC signature authentication for backend integrators.

Required Headers:

  • X-Integrator-Key: Integrator API key (format: int_...)
  • X-Signature: HMAC signature (format: sha256={hex})
  • X-Timestamp: Unix timestamp in milliseconds
  • Authorization: Bearer {user-api-key}

Signature Algorithm: HMAC-SHA256

Signature Format: {timestamp}.{METHOD}.{path}.{bodyHash}

  • timestamp: Unix timestamp in milliseconds
  • METHOD: HTTP method in UPPERCASE (GET, POST, etc.)
  • path: Request path (e.g., /v1/transactions)
  • bodyHash: SHA256 hex digest of request body (empty string if no body)

Timestamp Tolerance: ±5 minutes (300 seconds)

Example: For POST /v1/transactions with body {"amount":100} and timestamp 1234567890000: Payload: 1234567890000.POST./v1/transactions.{sha256(body)} Signature: sha256=abc123...

X-Integrator-Key
string
header
required

Integrator API key (format: int_...) used with HMAC authentication

X-Timestamp
string
header
required

Unix timestamp in milliseconds for replay attack prevention. Must be within 5 minutes of server time.

Body

userApiKey
string
required

User API key for token exchange

Minimum string length: 1
Example:

"ak_N2FjZTk3ZjMtsTWiZF00MGU0LWIxYTMtMTY0ZmM3MzJiNTdm"

expiresIn
number
default:3600

Token lifetime in seconds (default: 3600, max: 3600)

Required range: 1 <= x <= 3600
Example:

3600

Response

Response for status 200

accessToken
string
required

JWT access token with spr_ prefix

Example:

"spr_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

userId
string
required

The internal ID of the authorized user

Example:

"6a749a054c3b8fc5da595d1d"

tokenType
enum<string>
required

Token type (always 'Bearer')

Available options:
Bearer
expiresIn
number
required

Token lifetime in seconds

Example:

3600

expiresAt
string<date-time>
required

ISO 8601 timestamp when token expires

Example:

"2026-08-06T15:28:21.833Z"