Skip to content

Auth Service API (1.0.0)

Authentication and authorization service for the True Markets platform — issues JWT access/refresh tokens used across the Gateway, DeFi, and other True Markets APIs.

Base URLs

EnvironmentBase URL
Productionhttps://api.truemarkets.co/v1/auth
UAT (sandbox)https://api.uat.truemarkets.co/v1/auth

Authentication tutorial

Programmatic clients use an ECDSA-signed challenge to mint short-lived JWTs.

  1. Create an account at https://www.truemarkets.co (passkey, email, magic link, or Sign in with Apple).
  2. Register an API key in your account's API Keys settings page. Generate an EC P-256 key pair locally and submit only the public key — the private key never leaves your machine. You'll receive a key_id (UUID).
  3. Mint JWTs by calling POST /api-key/token with key_id, a current timestamp (Unix seconds, within ±30s of server UTC time), and signature — an ES256 (ECDSA P-256 + SHA-256) signature of the message {key_id}.{timestamp}, base64url-encoded. The response returns access_token and refresh_token.
  4. Call True Markets APIs (Gateway, DeFi) with Authorization: Bearer <access_token>.
  5. Refresh expired access tokens via POST /token/refresh with the refresh_token — no re-signing required.

Quick start

# 1. Mint a JWT (key_id and signature computed client-side)
curl -X POST https://api.truemarkets.co/v1/auth/api-key/token \
  -H "Content-Type: application/json" \
  -d '{"key_id":"<UUID>","timestamp":<UNIX_SECONDS>,"signature":"<BASE64URL_ES256_SIG>"}'

# 2. Fetch JWKS to verify token signatures locally
curl https://api.truemarkets.co/.well-known/jwks.json

# 3. Refresh a token before expiry
curl -X POST https://api.truemarkets.co/v1/auth/token/refresh \
  -H "Content-Type: application/json" \
  -d '{"refresh_token":"<REFRESH_TOKEN>"}'

Support

Download OpenAPI description
Languages
Servers
Production

https://api.truemarkets.co/v1/auth/

UAT (sandbox)

https://api.uat.truemarkets.co/v1/auth/

Operations
Operations