Complete device registration
Non-custodial accounts are available in sandbox only. Production non-custodial accounts are on the roadmap.
Registers the authorization key that the Digital Asset Accounts SDK created on the end user’s device and activates it for the end customer linked by POST /v1/accounts/auth/sessions. After this call, the authorization key signs the X-Device-Authorization header on non-custodial requests.
The request needs two signatures from the SDK: X-Device-Authorization from the new authorization key, and X-Registration-Flow-Authorization from the temporary key created when the login was prepared. Your backend relay must forward both headers and the body unchanged.
This call doesn’t create an account or a wallet.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
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.
64 - 8192"eyJhbGciOiJFUzI1NiJ9.e30.AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-Pw"
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.
64 - 8192"eyJhbGciOiJFUzI1NiJ9.e30.AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-Pw"
Body
Universally unique identifier (UUID v4) idempotency key. This key is utilized to ensure exactly-once execution of mutating requests.
"ba943ff1-ca16-49b2-ba55-1057e70ca5c7"
The registrationHandle returned by POST /v1/accounts/auth/sessions.
200"Yk3vQ9xR2mT7nL4pW8sZ1cF6hJ0aD5eG3uB9iK2oN7q"
The PKCE code verifier whose S256 challenge was sent as registrationCodeChallenge when the login was prepared. Unpadded base64url.
^[A-Za-z0-9_-]{43,256}$"zkpGrxlb_K57zml2GD-hwY0iaoYuAC3Dn93ls0I-Kgg"
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.
122"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6datWbQ0kQFkT9lH_qz1su-2nvHaOIuCfQnh3w_tNntxJQOob8_kRkV7_wuoVz7dPVXqDaSXLd2cugsh7LncOA"
Response
Successfully registered and activated the authorization key.
The active device registration for an end customer.