Skip to main content
POST
Complete device registration

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

X-Device-Authorization
string
required

Compact ES256 JWS that the Digital Asset Accounts SDK creates on the end user's device. It signs this request's method, path, and exact body bytes (an empty body for GET requests) with the authorization key the end user registered. The SDK creates a new value for every new request.

A missing value returns 400 (error code 420031). A value that isn't a well-formed compact JWS returns 401 (error code 420031).

The SDK gives each value an expiry at most 5 minutes after it signs it. Unless the operation says otherwise, Circle rejects a value whose expiry has passed or whose signing time is in the future, allowing 60 seconds of clock difference either way, with 400 (error code 420031). A device clock that's off by more than 60 seconds causes the same error. Retry within the value's lifetime, or let the SDK sign the request again.

Your backend relay must forward this header, and the request body, exactly as the SDK sent them. Don't parse, reformat, or re-serialize the body. If the bytes change, Circle rejects the request.

Compact ES256 JWS created by the Digital Asset Accounts SDK on the end user's device.

Required string length: 64 - 8192
Example:

"eyJhbGciOiJFUzI1NiJ9.e30.AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-Pw"

X-Registration-Flow-Authorization
string
required

Compact ES256 JWS that the Digital Asset Accounts SDK creates on the end user's device with the temporary registration key it generated for this login (the key whose public half was sent as registrationFlowPublicKey when the login was prepared). It signs this request's exact body bytes.

The SDK gives each value an expiry at most 5 minutes after it signs it. Circle rejects a value whose expiry has passed or whose signing time is in the future, allowing 60 seconds of clock difference either way, with 400 (error code 420031). A device clock that's off by more than 60 seconds causes the same error. Retry within the value's lifetime, or let the SDK sign the request again.

Your backend relay must forward this header, and the request body, exactly as the SDK sent them. Don't parse, reformat, or re-serialize the body.

Compact ES256 JWS created by the Digital Asset Accounts SDK on the end user's device.

Required string length: 64 - 8192
Example:

"eyJhbGciOiJFUzI1NiJ9.e30.AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-Pw"

Body

application/json
idempotencyKey
string<uuid>
required

Universally unique identifier (UUID v4) idempotency key. This key is utilized to ensure exactly-once execution of mutating requests.

Example:

"ba943ff1-ca16-49b2-ba55-1057e70ca5c7"

registrationHandle
string
required

The registrationHandle returned by POST /v1/accounts/auth/sessions.

Maximum string length: 200
Example:

"Yk3vQ9xR2mT7nL4pW8sZ1cF6hJ0aD5eG3uB9iK2oN7q"

registrationCodeVerifier
string
required

The PKCE code verifier whose S256 challenge was sent as registrationCodeChallenge when the login was prepared. Unpadded base64url.

Pattern: ^[A-Za-z0-9_-]{43,256}$
Example:

"zkpGrxlb_K57zml2GD-hwY0iaoYuAC3Dn93ls0I-Kgg"

authKeyPublicKey
string
required

Public key of the P-256 authorization key that the Digital Asset Accounts SDK created on the device. After registration, this key signs the X-Device-Authorization header.

Required string length: 122
Example:

"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6datWbQ0kQFkT9lH_qz1su-2nvHaOIuCfQnh3w_tNntxJQOob8_kRkV7_wuoVz7dPVXqDaSXLd2cugsh7LncOA"

Response

Successfully registered and activated the authorization key.

data
object
required

The active device registration for an end customer.