POST /register
AvailableUpsert a device and read the current app config, Firebase config, and policy.
POST
https://ctrlapp.krdcode.com/api/public/sdk/v1/registerAuth:
Bearer <PUBLISHABLE_KEY>Body cap 32 KiB. All fields except device_uid are optional.
Body
json
{
"device_uid": "<DEVICE_ID>", // required, 1..200 chars
"hardware_id": "<optional stable id>", // used to dedupe reinstalls
"platform": "ios" | "android" | "web" | "...",
"os_version": "17.4.1",
"app_version": "1.2.3",
"model": "iPhone15,3",
"locale": "en-US",
"timezone": "America/New_York",
"push_token": "<APNs / FCM token>",
"push_platform": "apns" | "fcm",
"external_user_id": "<optional stable user id>",
"tags": { "tier": "gold" }
}200 response
json
{
"device_id": "<uuid>", // server-assigned; store it
"config": {
"is_blocked": false,
"block_message": null,
"min_app_version": null
},
"firebase_config": { /* nullable */ } ,
"policy": { /* privacy / screen-capture policy */ }
}The response does NOT echo device_uid. Persist device_id if you need to reference the server row later.
Errors
400— invalid body.401— bad key / signature.402—"Device quota exceeded for this app's plan".413— body over 32 KiB.500—"Register failed"after retries.