Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
Organizations

Record the browser device the caller is signed in from

Records a Fingerprint visitor id against an existing org. It exists because the dominant signup funnel is the first-login auto-onboard, which creates the org server-side with no request body to carry the device on, so without this endpoint the primary funnel would stay dark. Any member of the org may call it. It never changes access, billing, or org state, and it always returns 204 once authorized, including when the body is empty: a browser that blocked the agent must not see an error.

POST
/v1/orgs/{orgId}/device
AuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

In: header

Path Parameters

orgId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Browser signals the dashboard captured for this action: device intelligence from the Fingerprint JavaScript agent, and the reCAPTCHA v3 assessment of the same action. Every field is optional; a browser that blocked one vendor, both, or neither must reach the same 204. The two halves differ in what the server can do with them. The device fields are a CLAIM the control plane re-verifies with Fingerprint before it clusters on them. The captcha fields are a VERDICT the dashboard already reached against siteverify (a v3 token is single-use, so it cannot be re-checked here) and are recorded, never re-derived. The device half specifically: both fields are optional and CLIENT-REPORTED: the server records them and never refuses a request because of them or because they are missing. Send BOTH: the server checks the event id against Fingerprint's Server API, and only a confirmed pair is indexed, clustered, or used to raise a review flag. Anything it cannot confirm is kept as a claim and joins nothing (audit/FINGERPRINT.md).

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/orgs/string/device" \  -H "Content-Type: application/json" \  -d '{}'
Empty