OUTCOME · Create or advance
What changes
Creates or advances only the session resource described by this contract after authorization, validation, policy, and idempotency gates pass.
v2Authentication
/api/v2/auth/sessionsPURPOSE + BUSINESS CONTEXT
WHEN THIS CALL IS USEFUL
Call this when an existing account needs a new bounded client session after credential verification, device identification, and any required authenticator challenge.
OUTCOME · Create or advance
Creates or advances only the session resource described by this contract after authorization, validation, policy, and idempotency gates pass.
WHY IT MATTERS
ISOLATION + AUTHORITY
Tenant identity, profile, password, authenticator enrollment, recovery code, device, session, access token, refresh credential, step-up grant, and account-closure state remain distinct. Authentication proves only the admitted session and scopes; it grants no workspace role, wallet, payment, settlement, publisher, matching, or trading authority.
BEFORE YOU CALL
WHAT TO DO NEXT
AGENT GUIDANCE
The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.
Open the authoritative production contract ↗EXTENDED INTEGRATION GUIDANCE
Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.
PARAMETERS
emailbodyRequiredemail address · max 254Existing Hybrid-Chain account email.
passwordbodyRequiredstring · max 512Account password; used only to calculate the legacy seed-bound proof and never logged or retained.
two_factor_codebodyOptional6-digit TOTPRequired when the account has an authenticator enabled.
device_idbodyRequiredsafe identifier · 16–128Stable identifier scoped to this application installation.
device_namebodyOptionalstring · max 160Human-readable client label.
platformbodyRequiredios | android | web | serverClient class for session inventory and policy.
device_public_key_spkibodyOptionalSPKI stringOptional device key for future phishing-resistant capabilities.
REQUEST
{
"email": "[email protected]",
"password": "correct horse battery staple",
"two_factor_code": "123456",
"device_id": "web-client-7f4c2109",
"device_name": "Firefox on macOS",
"platform": "web"
}STABLE ERROR CODES
These codes are published by the authoritative gateway contract for this endpoint. Treat message as safe diagnostic text; integrations should branch on code and HTTP status.
invalid_jsonThe JSON body is malformed or fails the published identity-security schema.invalid_security_requestThe session, scope, public key, proof, or purpose-bound security request is invalid.invalid_credentialsThe bearer, client assertion, or proof-of-possession credential is invalid.step_up_requiredFresh purpose-bound authenticator verification or stronger authority is required.signing_key_not_foundThe requested signing-key or workload-client resource was not found.security_conflictThe requested identity-security transition conflicts with current state.identity_security_unavailableThe authoritative Identity security service is temporarily unavailable.RESPONSES
{
"data": {
"access_token": "hcm_…",
"refresh_token": "hcmr_…",
"token_type": "Bearer",
"expires_in": 900,
"refresh_expires_in": 2592000,
"client_id": "client-01",
"session_id": "9b51ed4c9c8f4aec85d1bd5520e40557",
"scopes": [
"profile:read",
"contracts:read"
]
}
}{
"code": "invalid_authentication_request",
"message": "The request fields are invalid."
}invalid_authentication_request{
"code": "invalid_credentials",
"message": "The credentials could not be verified."
}invalid_credentials{
"code": "two_factor_required",
"message": "An authenticator code is required."
}two_factor_required{
"code": "authentication_unavailable",
"message": "Authentication is temporarily unavailable."
}authentication_unavailableOPERATIONAL NOTES
UPGRADING FROM V1
If you maintain an older integration, use this map to find the V2 replacement. Do not translate the old request field-for-field: rebuild it from the V2 parameters and schemas above because identity, authorization, replay protection, and response semantics may have changed.
/api/v1/auth/loginAUTH: Log a User inThis route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.
Verify the exact production OpenAPI operation ↗Return to the V2 directory ↗