Register a VoIP (PushKit) / high-priority FCM call token
Register (or refresh) the device token used ONLY for inbound-call CallKit/ConnectionService pushes — separate from the general marketing/notification device tokens registered at POST /push/device-tokens. Re-registering the same token un-revokes it and updates last-seen. Call it once the client obtains a PushKit VoIP token (iOS) or the call-channel FCM token (Android).
Authorizations
Dashboard JWT token from Clerk
Headers
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
1 - 255Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
true, false Body
ios, android iOS: the raw PushKit (PKPushRegistry) token. Android: the FCM registration token used for the high-priority call channel.
Agent/user id this device belongs to; defaults to the authenticated user when omitted.
iOS app bundle id — the APNs apns-topic for a VoIP push is <bundle_id>.voip. Falls back to the server-configured bundle id when omitted.
255Response
The registered VoIP device (id, platform, token, bundle_id) wrapped in the standard { data, meta } envelope.
The registered VoIP device (id, platform, token, bundle_id) wrapped in the standard { data, meta } envelope.