Deployment protection and releases
Protect previews (and production) with team sign-in or a password, shareable links and a bypass token for automation; deploy without promoting, promote, gradual releases with an automatic stop; version skew protection.
/v1/functions/{name}/protectionGet deployment protection#
Who may open previews (off, team: members who sign in, password) and whether production is protected too; exceptions (domain names never protected), options_passthrough (OPTIONS requests pass, for CORS preflight), password_set, the bypass token's hint, the shareable links, and pro (the password and links are Pro).
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/functions/my-api/protection" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/protectionSet deployment protection#
Any of previews (off, team, password), production, options_passthrough, exceptions (20 at most), password (8 to 128 characters; needed the first time password is chosen; changing it signs everyone out). Answers like GET.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
previewsstringone of
off,team,passwordproductionbooleanoptions_passthroughbooleanexceptionsstring[]0–20 items
passwordstring8–128 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_mode, routing_bad_exceptions, routing_bad_password, routing_password_needed |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 402 | routing_plan_required: password protection is Pro |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/functions/my-api/protection" \
-H "Authorization: Bearer $KEY" \
-d '{"previews":"off","production":true,"options_passthrough":true,"exceptions":["…"],"password":"…"}'/v1/functions/{name}/protection/bypassCreate the bypass token#
A token for automation that skips protection, sent as the x-protection-bypass header or query parameter (the query parameter also sets a cookie). {token, hint, header}; the token is shown only in this answer and replaces the earlier one.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/protection/bypass" \
-H "Authorization: Bearer $KEY"- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/functions/my-api/protection/bypass" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/protection/sign-outSign every visitor out#
Sign-in, password and link cookies stop working; visitors sign in again. {signed_out: true}.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/protection/sign-out" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/routingGet promotion and version settings#
{auto_promote, skew_protection, skew_hours, production_version, deployment_ids, candidates: [{version, url, releasing, build, commit, message, since}], release, pinned: [{version, url}]}.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/functions/my-api/routing" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/routingSet promotion and version settings#
auto_promote: false = deploy without promoting: a production build becomes a candidate at rel-<version>--<name> and goes live only when promoted or released. skew_protection keeps an open page on the version it came from for skew_hours (1 to 168, default 12).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
auto_promotebooleanskew_protectionbooleanskew_hoursinteger1–168
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_window, routing_bad_body |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/functions/my-api/routing" \
-H "Authorization: Bearer $KEY" \
-d '{"auto_promote":true,"skew_protection":true,"skew_hours":1}'/v1/functions/{name}/promotePromote a version#
Make version (or the version of build) live in production at once. Ends a gradual release. {name, active_version, url}.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
versionintegerbuildstring (uuid)
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 409 | routing_already_live, routing_preview_build, routing_not_ready |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/promote" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1,"build":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f"}'/v1/functions/{name}/releasesList gradual releases#
{releases: [Release], active} newest first. A Release: {number, status: active|completed|stopped|superseded, percent, version, from_version, steps, step, next_step_at, error_rate, min_requests, end_reason, url, started_by, started_at, changed_at, ended_at}.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/functions/my-api/releases" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/releasesStart a gradual release#
Send percent (default: the first step, or 10) of production traffic to version (or build). Each visitor stays on one side (a cookie). steps: percentages ending at 100, e.g. [10, 25, 50, 100], or {percent, after_minutes} objects; with every_minutes the steps run on a schedule, else by hand. The release stops by itself when more than error_rate (default 0.05) of the version's requests fail, once it has min_requests (default 50).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
versionintegerbuildstring (uuid)stepsany[]0–12 items
every_minutesnumber0–10080
percentinteger1–99
error_ratenumberat most 1
min_requestsinteger
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_steps, routing_bad_percent, routing_bad_threshold |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 409 | routing_release_active, routing_already_live, not_deployed |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/releases" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1,"build":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f","steps":[],"every_minutes":0,"percent":1,"error_rate":1,"min_requests":1}'/v1/functions/{name}/releases/{number}Get a release#
A Release (current for the active one) with metrics: {series: [{version, minute, requests, errors, static_requests}], totals: [{version, requests, errors, error_rate, static_requests}]} since it started.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 charactersnumberstringpathrequireda release number, or
current
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/functions/my-api/releases/1405-000001" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/releases/currentSet the release's share#
{percent} 1 to 100; 100 makes the version production and completes the release. Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
percentintegerrequired1–100
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/functions/my-api/releases/current" \
-H "Authorization: Bearer $KEY" \
-d '{"percent":1}'/v1/functions/{name}/releases/current/advanceNext step#
The plan's next step (after the last: production). Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/releases/current/advance" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/releases/current/stopStop the release#
All traffic back to production at once; the version stays at its own address, waiting. Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/releases/current/stop" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/protectionGet deployment protection#
Who may open previews (off, team: members who sign in, password) and whether production is protected too; exceptions (domain names never protected), options_passthrough (OPTIONS requests pass, for CORS preflight), password_set, the bypass token's hint, the shareable links, and pro (the password and links are Pro).
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/my-api/protection" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/protectionSet deployment protection#
Any of previews (off, team, password), production, options_passthrough, exceptions (20 at most), password (8 to 128 characters; needed the first time password is chosen; changing it signs everyone out). Answers like GET.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
previewsstringone of
off,team,passwordproductionbooleanoptions_passthroughbooleanexceptionsstring[]0–20 items
passwordstring8–128 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_mode, routing_bad_exceptions, routing_bad_password, routing_password_needed |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 402 | routing_plan_required: password protection is Pro |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/my-api/protection" \
-H "Authorization: Bearer $KEY" \
-d '{"previews":"off","production":true,"options_passthrough":true,"exceptions":["…"],"password":"…"}'/v1/apps/{name}/protection/bypassCreate the bypass token#
A token for automation that skips protection, sent as the x-protection-bypass header or query parameter (the query parameter also sets a cookie). {token, hint, header}; the token is shown only in this answer and replaces the earlier one.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/protection/bypass" \
-H "Authorization: Bearer $KEY"- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/my-api/protection/bypass" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/protection/sign-outSign every visitor out#
Sign-in, password and link cookies stop working; visitors sign in again. {signed_out: true}.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/protection/sign-out" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/routingGet promotion and version settings#
{auto_promote, skew_protection, skew_hours, production_version, deployment_ids, candidates: [{version, url, releasing, build, commit, message, since}], release, pinned: [{version, url}]}.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/my-api/routing" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/routingSet promotion and version settings#
auto_promote: false = deploy without promoting: a production build becomes a candidate at rel-<version>--<name> and goes live only when promoted or released. skew_protection keeps an open page on the version it came from for skew_hours (1 to 168, default 12).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
auto_promotebooleanskew_protectionbooleanskew_hoursinteger1–168
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_window, routing_bad_body |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/my-api/routing" \
-H "Authorization: Bearer $KEY" \
-d '{"auto_promote":true,"skew_protection":true,"skew_hours":1}'/v1/apps/{name}/promotePromote a version#
Make version (or the version of build) live in production at once. Ends a gradual release. {name, active_version, url}.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
versionintegerbuildstring (uuid)
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 409 | routing_already_live, routing_preview_build, routing_not_ready |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/promote" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1,"build":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f"}'/v1/apps/{name}/releasesList gradual releases#
{releases: [Release], active} newest first. A Release: {number, status: active|completed|stopped|superseded, percent, version, from_version, steps, step, next_step_at, error_rate, min_requests, end_reason, url, started_by, started_at, changed_at, ended_at}.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/my-api/releases" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/releasesStart a gradual release#
Send percent (default: the first step, or 10) of production traffic to version (or build). Each visitor stays on one side (a cookie). steps: percentages ending at 100, e.g. [10, 25, 50, 100], or {percent, after_minutes} objects; with every_minutes the steps run on a schedule, else by hand. The release stops by itself when more than error_rate (default 0.05) of the version's requests fail, once it has min_requests (default 50).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
versionintegerbuildstring (uuid)stepsany[]0–12 items
every_minutesnumber0–10080
percentinteger1–99
error_ratenumberat most 1
min_requestsinteger
Response
200object
Errors
| Status | Description |
|---|---|
| 400 | routing_bad_steps, routing_bad_percent, routing_bad_threshold |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | not_found |
| 409 | routing_release_active, routing_already_live, not_deployed |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/releases" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1,"build":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f","steps":[],"every_minutes":0,"percent":1,"error_rate":1,"min_requests":1}'/v1/apps/{name}/releases/{number}Get a release#
A Release (current for the active one) with metrics: {series: [{version, minute, requests, errors, static_requests}], totals: [{version, requests, errors, error_rate, static_requests}]} since it started.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 charactersnumberstringpathrequireda release number, or
current
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/my-api/releases/1405-000001" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/releases/currentSet the release's share#
{percent} 1 to 100; 100 makes the version production and completes the release. Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
percentintegerrequired1–100
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/my-api/releases/current" \
-H "Authorization: Bearer $KEY" \
-d '{"percent":1}'/v1/apps/{name}/releases/current/advanceNext step#
The plan's next step (after the last: production). Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/releases/current/advance" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/releases/current/stopStop the release#
All traffic back to production at once; the version stays at its own address, waiting. Answers with the Release.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | routing_no_release |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/releases/current/stop" \
-H "Authorization: Bearer $KEY"/v1/protection/grantSign in to a protected deployment#
Used by the dashboard's sign-in page for team protection: {host, return} → {redirect}, the deployment's address with a one-time hand-over that becomes the visitor's cookie. The caller must be a member of the team that owns it.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Request bodyapplication/json
hoststringrequiredreturnstringrequired
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | routing_not_member, routing_other_team |
| 404 | routing_no_site |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/protection/grant" \
-H "Authorization: Bearer $KEY" \
-d '{"host":"…","return":"https://example.com"}'/v1/protection/passwordOpen a password-protected deployment#
Used by the sign-in page for password protection: {host, return, password} → {redirect}. No key needed; 20 tries a minute per project.
- Credential
- None
Request bodyapplication/json
hoststringrequiredreturnstringrequiredpasswordstringrequired
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | routing_wrong_password |
| 404 | routing_no_site |
| 409 | routing_no_password |
| 429 | rate_limited |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/protection/password" \
-d '{"host":"…","return":"https://example.com","password":"…"}'