CuraeAI Developers
API referenceSDK Curae Connect

Mint a graduation handoff token for an existing LIMITED user

SDK consumers surface a `<CuraeUpgradeCard>` whenever the current user is in the `LIMITED` lifecycle state; a tap on the upgrade CTA proxies to this route via the consumer backend. The platform mints a fresh server-signed `GRADUATION_HANDOFF` JWT that pins the LIMITED `User.id` and returns the Curae-hosted `/graduate?handoff=<token>` webview URL the SDK navigates the user to. The credential-binding ceremony (passkey, magic link, password) runs inside that webview. Idempotency-Key is REJECTED because every call MUST mint a fresh short-lived JWT — replays would return a stale token whose TTL may have elapsed. Rate-limited at 10 req / customer-account / appUserId / minute (same cap as `/initiate`) to close the LIMITED-binding enumeration side channel.

POST/api/sdk/v1/curae-connect/graduation-handoff

SDK consumers surface a <CuraeUpgradeCard> whenever the current user is in the LIMITED lifecycle state; a tap on the upgrade CTA proxies to this route via the consumer backend. The platform mints a fresh server-signed GRADUATION_HANDOFF JWT that pins the LIMITED User.id and returns the Curae-hosted /graduate?handoff=<token> webview URL the SDK navigates the user to. The credential-binding ceremony (passkey, magic link, password) runs inside that webview. Idempotency-Key is REJECTED because every call MUST mint a fresh short-lived JWT — replays would return a stale token whose TTL may have elapsed. Rate-limited at 10 req / customer-account / appUserId / minute (same cap as /initiate) to close the LIMITED-binding enumeration side channel.

Authorization

platformApiKey
AuthorizationBearer <token>

CuraeAI Platform API key using the format Bearer . Keys are opaque credentials such as cae_live_..., not JWTs.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/api/sdk/v1/curae-connect/graduation-handoff" \  -H "Content-Type: application/json" \  -d '{    "appUserId": "string"  }'
{  "handoffUrl": "http://example.com",  "handoffToken": "string",  "handoffTokenExpiresAt": "2019-08-24T14:15:22Z",  "subjectUserId": "296d2d93-03fc-4d0e-b7e7-4f7600664125"}
{  "type": "string",  "title": "string",  "status": 0,  "detail": "string",  "instance": "string",  "code": "string",  "details": {},  "retryable": true}
{  "type": "string",  "title": "string",  "status": 0,  "detail": "string",  "instance": "string",  "code": "string",  "details": {},  "retryable": true}
{  "type": "string",  "title": "string",  "status": 0,  "detail": "string",  "instance": "string",  "code": "string",  "details": {},  "retryable": true}