stable · api · 0.1.0
Create a browser-safe hosted Identity Migration handoff
POST /api/v1/identity-migration-transactions/{transactionId}/hosted-continuations
Capability Domain: Identity Trust
Authentication
projectCredential (identity-migrations:write)
Scope: identity-migrations:write
Parameters and request body
-
transactionId— path, requiredtransactionId schema { "type": "string", "format": "uuid" } -
Idempotency-Key— header, requiredIdempotency-Key schema { "type": "string", "maxLength": 120 }
Request schema
application/json
{
"type": "object",
"additionalProperties": false,
"required": [
"flow_token",
"return_uri",
"state"
],
"properties": {
"flow_token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"return_uri": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"state": {
"type": "string",
"maxLength": 2048
}
}
}
application/json request example
{
"flow_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"return_uri": "https://project.example.test/migration/callback",
"state": "opaque-project-state"
}
Responses and errors
| Status | Description |
|---|---|
201 | Creation-only browser handoff. Submit both fields in a form POST to /identity-migration/continue. |
401 | Invalid or revoked Project Credential |
403 | Project Credential lacks the required scope |
422 | Request violates the public contract |
201 schema
{
"type": "object",
"additionalProperties": false,
"required": [
"data"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"continuation_token",
"expires_at"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"continuation_token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
401 schema
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable",
"correlation_id",
"details"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string",
"format": "uuid"
},
"details": {
"type": "object"
}
}
}
}
}
403 schema
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable",
"correlation_id",
"details"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string",
"format": "uuid"
},
"details": {
"type": "object"
}
}
}
}
}
422 schema
{
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message",
"retryable",
"correlation_id",
"details"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string",
"format": "uuid"
},
"details": {
"type": "object"
}
}
}
}
}
201 example
{
"data": {
"id": "61000000-0000-4000-8000-000000000229",
"continuation_token": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"expires_at": "2026-08-05T10:10:00Z"
}
}
Idempotency
Requires Idempotency-Key; retry the identical request after an uncertain response to recover the same one-browser continuation.