Tearleads

POST/auth/verify

Verify an auth challenge

Operation auth.verify

Description

Completes sign-in by checking the challenge signature, bound to the API origin, against the identity's registered signing key, then opens a session and returns its bearer token plus the first WebSocket ticket. Each challenge can be used once. A suspended identity's valid signature is refused with 403 and code account_suspended, which clients treat as terminal.

Authentication

No session is required.

Request body

application/jsonVerifyRequest

Proves possession of an identity's signing key by signing the sign-in challenge.

2 fields
  • fingerprintstringrequired
    • exactly 64 characters
    • lowercase hexadecimal

    Fingerprint the challenge was issued for.

  • signaturestringrequired
    • exactly 6,172 characters
    • base64, pattern ^(?:[A-Za-z0-9+/]{4}){1542}[A-Za-z0-9+/][AQgw]==$

    Base64 ML-DSA-87 signature over the challenge, bound to the API origin and fingerprint.

Other fields are allowed.

Responses

200 OK

application/jsonVerifySuccessResponse

A successful sign-in: the new session's bearer token and where the user's data starts.

9 fields
  • authenticatedbooleanrequired
    • always true
  • codenever presentoptional
  • errornever presentoptional
  • isRootbooleanrequired

    True for a platform operator; it only reveals the root console, and the API enforces root access itself.

  • organizationIdstringrequired
    • not empty

    The user's default organization.

  • rootContainerIdstringrequirednullable
    • not empty

    Root container of the default organization, or null after that organization was purged; clients verify its role from signed state.

  • tokenstringrequired
    • not empty

    Bearer token for the Authorization header of later requests.

  • userIdstringrequired
    • not empty
  • wsTicketstringrequired
    • not empty

    Single-use ticket for this session's first WebSocket connection.

Other fields are allowed.

Other responses

StatusMeaningBody
400Bad Request

application/jsonErrorResponse

401Unauthorized

application/jsonVerifyFailureResponse

403Forbidden

application/jsonVerifyFailureResponse

404Not Found

application/jsonVerifyFailureResponse

500Internal Server Error

application/jsonErrorResponse

503Service Unavailable

application/jsonErrorResponse