Add an allowed origin
const url = 'https://api.keliplay.com/v1/tenant/allowed-origins';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"origin":"https://www.example.com","platform":"web"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.keliplay.com/v1/tenant/allowed-origins \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "origin": "https://www.example.com", "platform": "web" }'Allows a website or app to embed your games.
For web, send an absolute https URL. Only its origin is kept, so
https://www.example.com/promo is stored as https://www.example.com.
Plain http is accepted only for local development addresses. For
android and ios, send the app’s application id or bundle id, such as
com.example.app; it is stored as android:com.example.app or
ios:com.example.app, the value to mint client tokens with. One app id
can be added for both platforms.
Adding an origin you already have returns it with 200.
Permission: origins.manage.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Example
{ "origin": "https://www.example.com", "platform": "web"}Responses
Section titled “Responses”The origin was already allowed. It is returned unchanged.
object
object
A web origin, or an app as android:<application id> or ios:<bundle id>.
react_native and flutter appear only on origins added before apps were registered by platform.
Example
{ "allowedOrigin": { "platform": "web" }}The new origin.
object
object
A web origin, or an app as android:<application id> or ios:<bundle id>.
react_native and flutter appear only on origins added before apps were registered by platform.
Example
{ "allowedOrigin": { "id": "0192f3a1-0000-7000-8000-0000000a0001", "origin": "https://www.example.com", "platform": "web", "createdAt": "2026-09-01T09:00:00.000Z" }}The request is not valid. details lists each field that failed, where there is one.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "invalid_request", "message": "Invalid request json.", "details": [ { "path": "name", "message": "Too small, expected string to have >=1 characters" } ] }}The API key is missing, malformed or revoked.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "unauthorized", "message": "Invalid or revoked API key." }}The API key does not carry the permission this needs, or the request is not allowed.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "forbidden", "message": "Your role does not allow this (draws.run)." }}