Apps
Static sites with an optional function at <name>.app.trustpage.ir. Same routes as Functions, plus static files.
/v1/apps/{name}/uploadDeploy an app from a .zip or .tar.gz (a static site now, a project through the builder)#
Checked before anything is stored: no paths outside the project, no links, sizes and file counts by plan.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredpattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$createbooleanquerymake the app if it is new
deploybooleanquerya static site: false makes the version only
branchstringquerya project build for this branch's preview
Request bodyapplication/octet-stream
string (binary)
Response
201objectCreated: mode static (deployed) or build (queued; follow GET …/builds/{id}/logs)
modestringone of
static,buildframeworkstring | nullnamestringcreatedbooleanfilesintegerversionintegerdeployedbooleanurlstringspabooleanuploaded_filesintegerbuildobjectidstringstatusstringerrorstring | null
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_archive, bad_path, duplicate_path, link_in_archive, empty_archive, not_deployable |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: name_taken |
| 413 | Too large: too_large, too_many_files, file_too_large, limit_exceeded (over the plan's deployment limits, GET /v1/limits) |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/upload" \
-H "Authorization: Bearer $KEY" \
--data-binary @file/v1/appsList apps#
- Credential
- An API key or a dashboard session
- Roles
- Any role
Response
200object
appsProject[]requiredidstring (uuid)requirednamestringrequiredkindstringrequiredone of
function,appurlstringrequiredactive_versioninteger | nullrequiredcreated_atstring (date-time)requiredstatusstringrequiredrunning: served a request (a static file or its code) in the last 3 minutes, or static files only (always running once deployed); idle: deployed and quiet, wakes on the next request
one of
running,idle,not_deployedcreated_byActor | nullwho created it; null when not known
kindstringone of
person,key,systemidstringnamestring | nullemailstring | nullavatarstring | nulla small image as a data URL
labelstringyouboolean
connectedobject[]the stores its production version uses
kindstringone of
database,cache,bucket,queuenamestring
last_buildobject | nullrequiredidstring (uuid)requiredbranchstringrequiredmain for production
productionbooleanrequiredcommitstring | nullmessagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failedtriggerstringrequiredone of
cli,gitcreated_atstring (date-time)required
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps" \
-H "Authorization: Bearer $KEY"/v1/appsCreate an app#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Request bodyapplication/json
namestringrequiredone DNS label: lowercase letters, digits and hyphens, 1-63 characters, no
--pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
201Project
idstring (uuid)requirednamestringrequiredkindstringrequiredone of
function,appurlstringrequiredactive_versioninteger | nullrequiredcreated_atstring (date-time)requiredstatusstringrequiredrunning: served a request (a static file or its code) in the last 3 minutes, or static files only (always running once deployed); idle: deployed and quiet, wakes on the next request
one of
running,idle,not_deployedcreated_byActor | nullwho created it; null when not known
kindstringone of
person,key,systemidstringnamestring | nullemailstring | nullavatarstring | nulla small image as a data URL
labelstringyouboolean
connectedobject[]the stores its production version uses
kindstringone of
database,cache,bucket,queuenamestring
last_buildobject | nullrequiredidstring (uuid)requiredbranchstringrequiredmain for production
productionbooleanrequiredcommitstring | nullmessagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failedtriggerstringrequiredone of
cli,gitcreated_atstring (date-time)required
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_name, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 409 | Conflict: name_taken |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps" \
-H "Authorization: Bearer $KEY" \
-d '{"name":"site"}'/v1/apps/{name}Get an app#
- 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
200Project
idstring (uuid)requirednamestringrequiredkindstringrequiredone of
function,appurlstringrequiredactive_versioninteger | nullrequiredcreated_atstring (date-time)requiredstatusstringrequiredrunning: served a request (a static file or its code) in the last 3 minutes, or static files only (always running once deployed); idle: deployed and quiet, wakes on the next request
one of
running,idle,not_deployedcreated_byActor | nullwho created it; null when not known
kindstringone of
person,key,systemidstringnamestring | nullemailstring | nullavatarstring | nulla small image as a data URL
labelstringyouboolean
connectedobject[]the stores its production version uses
kindstringone of
database,cache,bucket,queuenamestring
last_buildobject | nullrequiredidstring (uuid)requiredbranchstringrequiredmain for production
productionbooleanrequiredcommitstring | nullmessagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failedtriggerstringrequiredone of
cli,gitcreated_atstring (date-time)required
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}Delete an app#
With its versions, previews, secrets and logs; its address stops answering at once and the name is free again. Refused while it has cron triggers, or while its live version or a preview binds a database, cache or bucket (checked after the role and the name, before step-up).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin
- Step-up
- With a dashboard session, a second factor confirmed in the last 10 minutes; API keys pass.
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
namestringdeletedbooleanrequiredversionsintegerhow many versions were removed
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, step_up_required |
| 404 | Not found: not_found |
| 409 | Conflict: has_crons, has_bindings |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}Rename an app#
Its address and its previews' move to the new name at once and the old ones stop answering; custom domains stay. Its id, versions, variables, crons, alerts, logs and usage stay with it. The old name stays reserved for 15 minutes. Refused while a build is queued or running, or when a preview's address would pass 63 characters.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin
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
namestringrequiredone DNS label: lowercase letters, digits and hyphens, 1-63 characters, no
--pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200Project
idstring (uuid)requirednamestringrequiredkindstringrequiredone of
function,appurlstringrequiredactive_versioninteger | nullrequiredcreated_atstring (date-time)requiredstatusstringrequiredrunning: served a request (a static file or its code) in the last 3 minutes, or static files only (always running once deployed); idle: deployed and quiet, wakes on the next request
one of
running,idle,not_deployedcreated_byActor | nullwho created it; null when not known
kindstringone of
person,key,systemidstringnamestring | nullemailstring | nullavatarstring | nulla small image as a data URL
labelstringyouboolean
connectedobject[]the stores its production version uses
kindstringone of
database,cache,bucket,queuenamestring
last_buildobject | nullrequiredidstring (uuid)requiredbranchstringrequiredmain for production
productionbooleanrequiredcommitstring | nullmessagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failedtriggerstringrequiredone of
cli,gitcreated_atstring (date-time)required
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_name, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: name_taken, build_running, preview_too_long |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/site" \
-H "Authorization: Bearer $KEY" \
-d '{"name":"site"}'/v1/apps/{name}/versionsList versions (newest 100)#
- 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
versionsVersion[]requirednumberintegerrequiredbundle_hashstring | nullsha256, hex
pattern
^[0-9a-f]{64}$manifest_hashstring | nullsha256, hex
pattern
^[0-9a-f]{64}$runtime_datestringcreated_bystringcreated_atstring (date-time)activebooleanrequiredlive in production
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/versions" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/versionsUpload a version#
An app needs files, modules, or both. JSON body up to 20 MiB.
- 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
main_modulestringentry module name; required with modules
pattern
^[A-Za-z0-9][A-Za-z0-9._-]{0,99}\.m?js$modulesobjectmodule name -> source; 1-50 modules, 10 MiB in all; required for a function
runtime_datestring (date)YYYY-MM-DD, 2022-01-01 to today; default today
varsobjectup to 64; names ^[A-Za-z_][A-Za-z0-9_]{0,63}$
bindingsobjectenv name -> the team's database, cache or bucket
filesobjectapps only: path -> file; the count, each size and the total by plan (GET /v1/limits)
headers_filestringapps only: a _headers file
redirects_filestringapps only: a _redirects file
spabooleanapps only: serve /index.html for unknown paths
Response
201VersionCreated
versionintegerrequiredbundle_hashstring | nullsha256, hex
pattern
^[0-9a-f]{64}$manifest_hashstring | nullsha256, hex
pattern
^[0-9a-f]{64}$filesintegerspabooleanruntime_datestringvarsstring[]bindingsstring[]created_atstring (date-time)required
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_bundle, bad_bindings, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: missing_assets, rotate_storage_key |
| 413 | Body too large: too_large, limit_exceeded (over the plan's deployment limits, GET /v1/limits) |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/versions" \
-H "Authorization: Bearer $KEY" \
-d '{"main_module":"…","modules":{},"runtime_date":"2026-11-04","vars":{},"bindings":{},"files":{},"headers_file":"…","redirects_file":"…","spa":true}'/v1/apps/{name}/deployDeploy a version (production or a preview)#
A branch other than main, master or production deploys the preview <branch>--<name>.
- 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
versionintegerdefault: the newest
branchstringgit branch; default production
Response
200Deployed
namestringrequiredurlstringrequiredbranchstring | nullpreview label; null for production
active_versionintegerrequiredsnapshotinteger | nullrequiredconfiguration revision; null when superseded
supersededbooleanonly when true: a newer version is already live at that address, so this deploy changed nothing (concurrent deploys: the newest wins)
database_branchesDatabaseBranchRef[]databasestringrequiredbranchstringrequired
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_branch, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found, no_version |
| 409 | Conflict: binding_gone, too_many_branches, no_main, storage_busy |
| 500 | internal: an unexpected failure |
| 503 | Unavailable: storage_unavailable, storage_unreachable |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/deploy" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1,"branch":"dev"}'/v1/apps/{name}/rollbackRoll production back#
- 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
versionintegerdefault: the version live before the current one
Response
200RolledBack
namestringrequiredurlstringrequiredactive_versionintegerrequiredsnapshotinteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found, no_version |
| 409 | Conflict: not_deployed, binding_gone |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/rollback" \
-H "Authorization: Bearer $KEY" \
-d '{"version":1}'/v1/apps/{name}/previewsList branch previews#
- 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
previewsPreview[]requiredbranchstringrequiredurlstringrequiredversionintegerrequiredupdated_atstring (date-time)git_branchstring | nullthe git branch the build came from
commitstring | nullmessagestring | nullthe commit's first line
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/previews" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/previews/{branch}Delete a preview#
- 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 charactersbranchstringpathrequiredthe git branch or its label
Response
200PreviewDeleted
branchstringrequireddeletedbooleanrequireddatabase_branchesobject[]databasestringrequiredbranchstringrequireddeletedbooleanrequiredreasonstring
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site/previews/dev" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/assets/checkWhich static files are missing#
- 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
hashesstring[]required
Response
200object
missingstring[]required
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_hashes, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 413 | Body too large: too_large, limit_exceeded (over the plan's deployment limits, GET /v1/limits) |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/assets/check" \
-H "Authorization: Bearer $KEY" \
-d '{"hashes":["…"]}'/v1/apps/{name}/assets/{hash}Upload one static file#
The body is the raw bytes, up to the plan's size of one file (GET /v1/limits).
- 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 charactershashstringpathrequiredthe file's sha256
pattern
^[0-9a-f]{64}$
Request bodyapplication/octet-stream
string (binary)
Response
200object
hashstringrequiredsha256, hex
pattern
^[0-9a-f]{64}$sizeintegerrequired
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_hash, hash_mismatch |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 413 | Over the plan's size of one file: limit_exceeded |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/apps/site/assets/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08" \
-H "Authorization: Bearer $KEY" \
--data-binary @file/v1/apps/{name}/envList environment variables#
The project's own and the team's shared ones linked to it. Values are masked unless revealed.
- 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 charactersenvironmentstringquerythe variables that apply there
one of
production,preview,developmentbranchstringquerywith it: the variables for every preview and that branch's
keystringqueryone key
decryptstringquery1: plain values (owner, admin, developer); sensitive ones never
one of
1
Response
200EnvVarList
variablesEnvVar[]requiredidstring (uuid)requiredkeystringrequiredpattern
^[A-Za-z_][A-Za-z0-9_]{0,63}$environmentsstring[]requiredbranchstring | nullrequireda git branch; only with environments [preview]
scopestringrequiredteam: a shared variable
one of
project,teamtypestringrequiredsensitive: never shown again, production and preview only
one of
plain,sensitivevaluestring | nullrequiredthe text only when revealed (?decrypt=1) and plain
created_atstring (date-time)updated_atstring (date-time)created_byobject | nulltypestringone of
person,keynamestring | null
updated_byobject | nulltypestringone of
person,keynamestring | null
projectsobject[]shared variables only
namestringkindstringone of
function,app
sharedEnvVar[]a project's list: the team's shared variables linked to it
idstring (uuid)requiredkeystringrequiredpattern
^[A-Za-z_][A-Za-z0-9_]{0,63}$environmentsstring[]requiredbranchstring | nullrequireda git branch; only with environments [preview]
scopestringrequiredteam: a shared variable
one of
project,teamtypestringrequiredsensitive: never shown again, production and preview only
one of
plain,sensitivevaluestring | nullrequiredthe text only when revealed (?decrypt=1) and plain
created_atstring (date-time)updated_atstring (date-time)created_byobject | nulltypestringone of
person,keynamestring | null
updated_byobject | nulltypestringone of
person,keynamestring | null
projectsobject[]shared variables only
namestringkindstringone of
function,app
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_environments, bad_branch |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/env" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/envAdd or import environment variables#
All or none. Applies at once: running deployments restart with the new values.
- 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
one of: {key, value, …}, {variables: [...]}, {dotenv}
keystringvaluestringup to 5120 characters
variablesEnvVarInput[]several, up to 128
keystringrequiredvaluestringrequiredup to 5120 characters
environmentsstring[]default: all three; production and preview when sensitive; preview with a branch
branchstringa git branch: only its previews
typestringone of
plain,sensitivesensitiveboolean
dotenvstring.env text to import
environmentsstring[]for every row that leaves them out
branchstringprojects only
typestringone of
plain,sensitivesensitivebooleanupsertbooleanreplace the value of a variable with the same key, branch and environments
projectsstring[]shared variables only: the apps and functions it reaches
Response
201EnvVarAdded
variablesEnvVar[]requiredidstring (uuid)requiredkeystringrequiredpattern
^[A-Za-z_][A-Za-z0-9_]{0,63}$environmentsstring[]requiredbranchstring | nullrequireda git branch; only with environments [preview]
scopestringrequiredteam: a shared variable
one of
project,teamtypestringrequiredsensitive: never shown again, production and preview only
one of
plain,sensitivevaluestring | nullrequiredthe text only when revealed (?decrypt=1) and plain
created_atstring (date-time)updated_atstring (date-time)created_byobject | nulltypestringone of
person,keynamestring | null
updated_byobject | nulltypestringone of
person,keynamestring | null
projectsobject[]shared variables only
namestringkindstringone of
function,app
createdintegerrequiredupdatedintegerrequired
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_variable, bad_key, bad_value, bad_environments, bad_type, bad_branch, sensitive_development, policy_sensitive, bad_dotenv, duplicate, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: env_conflict, sensitive, too_many |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/env" \
-H "Authorization: Bearer $KEY" \
-d '{"key":"STRIPE_KEY","value":"s3cr3t","variables":[{"key":"STRIPE_KEY","value":"s3cr3t","environments":["production"],"branch":"dev","type":"plain","sensitive":true}],"dotenv":"…","environments":["production"],"branch":"dev","type":"plain","sensitive":true,"upsert":true,"projects":["…"]}'/v1/apps/{name}/env/{id}One environment variable#
- 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 charactersidstring (uuid)pathrequiredthe variable's id
decryptstringquery1: plain values (owner, admin, developer); sensitive ones never
one of
1
Response
200EnvVar
idstring (uuid)requiredkeystringrequiredpattern
^[A-Za-z_][A-Za-z0-9_]{0,63}$environmentsstring[]requiredbranchstring | nullrequireda git branch; only with environments [preview]
scopestringrequiredteam: a shared variable
one of
project,teamtypestringrequiredsensitive: never shown again, production and preview only
one of
plain,sensitivevaluestring | nullrequiredthe text only when revealed (?decrypt=1) and plain
created_atstring (date-time)updated_atstring (date-time)created_byobject | nulltypestringone of
person,keynamestring | null
updated_byobject | nulltypestringone of
person,keynamestring | null
projectsobject[]shared variables only
namestringkindstringone of
function,app
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/env/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/env/{id}Delete an environment variable#
- 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 charactersidstring (uuid)pathrequiredthe variable's id
Response
200object
idstring (uuid)keystringdeletedboolean
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site/env/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/env/{id}Change an environment variable#
A sensitive variable cannot become plain.
- 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 charactersidstring (uuid)pathrequiredthe variable's id
Request bodyapplication/json
keystringvaluestringup to 5120 characters
environmentsstring[]branchstring | nulltypestringone of
plain,sensitivesensitivebooleanprojectsstring[]shared variables only: replaces the links
Response
200EnvVar
idstring (uuid)requiredkeystringrequiredpattern
^[A-Za-z_][A-Za-z0-9_]{0,63}$environmentsstring[]requiredbranchstring | nullrequireda git branch; only with environments [preview]
scopestringrequiredteam: a shared variable
one of
project,teamtypestringrequiredsensitive: never shown again, production and preview only
one of
plain,sensitivevaluestring | nullrequiredthe text only when revealed (?decrypt=1) and plain
created_atstring (date-time)updated_atstring (date-time)created_byobject | nulltypestringone of
person,keynamestring | null
updated_byobject | nulltypestringone of
person,keynamestring | null
projectsobject[]shared variables only
namestringkindstringone of
function,app
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_variable, bad_key, bad_value, bad_environments, bad_type, bad_branch, sensitive_development, policy_sensitive, bad_dotenv, duplicate, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: env_conflict, sensitive, too_many |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/site/env/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY" \
-d '{"key":"STRIPE_KEY","value":"s3cr3t","environments":["production"],"branch":"dev","type":"plain","sensitive":true,"projects":["…"]}'/v1/apps/{name}/secrets/{key}Set a secret (a sensitive variable for production and preview)#
- 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 characterskeystringpathrequiredsecret name
pattern
^[A-Z_][A-Z0-9_]{0,63}$
Request bodyapplication/json
valuestringrequiredup to 5120 characters
Response
200object
namestringupdatedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_name, bad_value, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: too_many |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/apps/site/secrets/STRIPE_KEY" \
-H "Authorization: Bearer $KEY" \
-d '{"value":"s3cr3t"}'/v1/apps/{name}/secrets/{key}Delete a key in every environment#
- 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 characterskeystringpathrequiredsecret name
Response
200object
namestringdeletedboolean
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site/secrets/STRIPE_KEY" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/secretsList the variables' keys#
- 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
secretsSecret[]requirednamestringrequiredupdated_atstring (date-time)
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/secrets" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/cronsList cron triggers#
- 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
cronsCron[]requiredexprstringrequired5-field cron
tzstringrequiredIANA time zone
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/crons" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/cronsReplace the cron triggers#
- 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
crons(string | object)[]requiredup to 5
exprstringrequiredtzstring
tzstringdefault
"Asia/Tehran"
Response
200object
cronsCron[]requiredexprstringrequired5-field cron
tzstringrequiredIANA time zone
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_crons, too_many, bad_cron, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/apps/site/crons" \
-H "Authorization: Bearer $KEY" \
-d '{"crons":["0 3 * * *"]}'/v1/apps/{name}/logsLog entries, filtered and paged#
The newest limit entries that match, newest last; next_cursor reaches older ones. The store keeps about the last 2000 per project.
- 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 characterssincestringqueryISO time, epoch ms, or back from now: 30m, 1h, 7d
untilstringqueryISO time or epoch ms
levelstringqueryerror, warning, info (comma list)
sourcestringqueryrequest, static, fetch, cron, console (comma list)
statusstringquerycodes or classes, e.g. 404,5xx
pathstringqueryrequest paths (comma list); end with * for a prefix
environmentstringqueryproduction or preview
branchstringquerya preview's branch
deploymentstringquerya version number, e.g. 12 or v12
qstringquerytext the entry contains
limitintegerquery1-1000, default 100
1–1000 · default
100cursorstringquerynext_cursor of the page before
facetsstringquery1: counts per filter value
bucketsintegerquerya histogram of the range in this many bars (up to 120)
0–120
Response
200LogPage
logsLogEntry[]requirednewest last
idstringrequiredtintegermilliseconds since 1970
kindstringlevelstringmsgstringmethodstringpathstringstatusintegermsnumberversionintegerstaticbooleancronstringoutcomestringhoststringthe hostname a request was served on
tracestringthe request's trace id (32 hex), when its trace was kept; open it with GET /v1/traces/{trace_id}
severitystringone of
error,warning,infosourcestringone of
request,static,fetch,cron,consoleenvironmentstringone of
production,previewbranchstring | nulla preview's branch, when known
projectstringteam logs: the project
productstringone of
function,app
next_cursorstring | nullrequiredpass as cursor for older entries
matchedintegerrequiredentries in the range that match
scannedintegerrequiredtruncatedbooleanthe team's request read only part of its logs
facetsobjectwith facets=1: counts per filter value, each over what the other filters leave
levelobjectsourceobjectstatusobjectenvironmentobjectpathobjectprojectobject
histogramobjectwith buckets=n: the range in n bars, per level
fromintegertointegerbucketsobject[]fromintegererrorintegerwarningintegerinfointeger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_param |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/logs" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/tailFollow the log (server-sent events)#
Each event is data: <LogEntry JSON>; : keep-alive comments about every 10 s.
- 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
200stringtext/event-stream
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -N "https://api.ibel.ai/v1/apps/site/tail" \
-H "Authorization: Bearer $KEY"- 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 charactersfromstring (date-time)queryISO time; default an hour before
totostring (date-time)queryISO time; default now
Response
200UsageReport
fromstring (date-time)requiredtostring (date-time)requiredtotalUsagerequiredrequestsintegererrorsintegerwall_msintegerstatic_requestsintegerbytes_outintegersubrequestsintegeregress_bytesinteger
seriesUsage[]requiredrequestsintegererrorsintegerwall_msintegerstatic_requestsintegerbytes_outintegersubrequestsintegeregress_bytesintegerminutestring (date-time)
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_range |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/usage" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/observabilityRequests, errors and latency#
- 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 charactersrangestringquery1h (1-minute steps), 24h (15 minutes) or 7d (2 hours); any other value is 400 bad_range
one of
1h,24h,7d· default"1h"
Response
200Observability
rangestringrequiredstepstringrequiredtotalsPercentilesrequiredrequestsintegerevery request served, static files and code
function_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_4xxintegererrors_5xxintegererror_ratenumberp50number | nullp95number | nullp99number | null
seriesPercentiles[]requiredtstring (date-time)requestsintegerfunction_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_4xxintegererrors_5xxintegerp50number | nullp95number | nullp99number | null
routesPercentiles[]requiredroutestringrequestsintegerfunction_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_5xxintegererror_ratenumberavg_msnumber | nullp50number | nullp95number | nullp99number | null
notestringcopiesFunctionCopieslimitintegerrequiredthe plan's copies per server (function_copies in GET /v1/limits)
perstringrequiredone of
servertotalsCopyFiguresrequiredcopies_maxintegerthe most copies running at once on one server
copies_avgnumberthe average copies on a server while it ran the function, one decimal
startsintegerextra copies started because the function was busy
start_ms_avginteger | nulltheir average start time, ms
start_ms_maxinteger | nullstopsintegerextra copies stopped when idle
requestsintegerqueuedintegerrequests that waited for a free copy
queue_ms_avginteger | nullthe average wait, ms
queue_ms_maxinteger | nullrejectedintegerrequests turned away with 429 or 503 (Retry-After 1) because no copy was free in time
rejected_planintegerof those, the 429s: the function was at its plan's copies
seriesobject[]requiredthe same steps as the observability series
tstring (date-time)copies_maxintegercopies_avgnumberstartsintegerstart_ms_avginteger | nullqueuedintegerqueue_ms_avginteger | nullqueue_ms_maxinteger | nullrejectedintegerrejected_planinteger
serversCopyFigures[]requiredserverstringthe server's number, "1", "2", and on
copies_maxintegerthe most copies running at once on one server
copies_avgnumberthe average copies on a server while it ran the function, one decimal
startsintegerextra copies started because the function was busy
start_ms_avginteger | nulltheir average start time, ms
start_ms_maxinteger | nullstopsintegerextra copies stopped when idle
requestsintegerqueuedintegerrequests that waited for a free copy
queue_ms_avginteger | nullthe average wait, ms
queue_ms_maxinteger | nullrejectedintegerrequests turned away with 429 or 503 (Retry-After 1) because no copy was free in time
rejected_planintegerof those, the 429s: the function was at its plan's copies
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_range |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/observability" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/buildsList builds (newest 50)#
- 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
buildsBuild[]requiredidstring (uuid)requiredbranchstring | nullcommitstring | nullpattern
^[0-9a-f]{40}$messagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failed,cancelled,skippedtriggerstringrequiredone of
cli,gitversioninteger | nullerrorstring | nullcreated_atstring (date-time)requiredstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nullstagedbooleana production build held for its checks
promotionstringone of
none,waiting,promoted,blocked,supersededscanobject | nullthe dependency scan's summary
queueobject | nulla queued build's place in the team's queue
positioninteger1 is the team's next
aheadintegerrunningintegerlimitintegerthe team's concurrent builds
reasonstringone of
team_limit,waiting_for_builder
configBuildConfig | nullthe build configuration frozen when the build started
root_dirstringrequireda folder in the repository; empty: the root
ignore_commandstringrequiredexit 0 skips the build; empty: never skip
install_commandstringrequiredempty: detected
build_commandstringrequiredempty: detected
output_dirstringrequiredempty: detected
node_versionstring | nullrequirednull: the default (26)
one of
22,24,26,nullsecret_scanstringrequiredone of
block,warncachebooleanrequired
no_cachebooleanbuilt without the build cache
cacheobject | nullstatusstringone of
hit,miss,off,skipped,no_lockfilekeystringframeworkstringrestored_bytesintegersaved_bytesintegerevictedintegernotestring
hintobject | nulla failed build explained; show it above the log
kindstringone of
typescript,module_not_found,missing_env,out_of_memory,timeout,install_failed,secrets,no_output,build_command_failedtitlestringexplainstringfixstringfilestringlineintegercolumninteger
secretsobject | nullthe secret scan's summary
scannedbooleancountintegerhighintegerblockedbooleanpolicystringone of
block,warn
sbomobject | nullcomponentsintegerlock_filestring
provenanceobject | nullkey_idstringoutput_sha256string
skip_reasonstring | nullcancelled_bystring | null
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/buildsQueue a build from a source tarball#
The body is a .tar.gz of the project, up to 100 MiB.
- 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 charactersbranchstringquerygit branch; none, main, master or production builds production
commitstringquery40-hex git SHA
pattern
^[0-9a-f]{40}$no_cachestringquery1: build without the build cache
one of
1,truetriggerstringquerygit counts only from the Git receiver (its own token); otherwise the build is cli
one of
cli,git
Request bodyapplication/gzip
string (binary)
Response
201Build
idstring (uuid)requiredbranchstring | nullcommitstring | nullpattern
^[0-9a-f]{40}$messagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failed,cancelled,skippedtriggerstringrequiredone of
cli,gitversioninteger | nullerrorstring | nullcreated_atstring (date-time)requiredstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nullstagedbooleana production build held for its checks
promotionstringone of
none,waiting,promoted,blocked,supersededscanobject | nullthe dependency scan's summary
queueobject | nulla queued build's place in the team's queue
positioninteger1 is the team's next
aheadintegerrunningintegerlimitintegerthe team's concurrent builds
reasonstringone of
team_limit,waiting_for_builder
configBuildConfig | nullthe build configuration frozen when the build started
root_dirstringrequireda folder in the repository; empty: the root
ignore_commandstringrequiredexit 0 skips the build; empty: never skip
install_commandstringrequiredempty: detected
build_commandstringrequiredempty: detected
output_dirstringrequiredempty: detected
node_versionstring | nullrequirednull: the default (26)
one of
22,24,26,nullsecret_scanstringrequiredone of
block,warncachebooleanrequired
no_cachebooleanbuilt without the build cache
cacheobject | nullstatusstringone of
hit,miss,off,skipped,no_lockfilekeystringframeworkstringrestored_bytesintegersaved_bytesintegerevictedintegernotestring
hintobject | nulla failed build explained; show it above the log
kindstringone of
typescript,module_not_found,missing_env,out_of_memory,timeout,install_failed,secrets,no_output,build_command_failedtitlestringexplainstringfixstringfilestringlineintegercolumninteger
secretsobject | nullthe secret scan's summary
scannedbooleancountintegerhighintegerblockedbooleanpolicystringone of
block,warn
sbomobject | nullcomponentsintegerlock_filestring
provenanceobject | nullkey_idstringoutput_sha256string
skip_reasonstring | nullcancelled_bystring | null
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_source, bad_commit |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 413 | Body too large: too_large |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/builds" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/gzip" --data-binary @source.tar.gz/v1/apps/{name}/builds/{id}Get a build#
- 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 charactersidstring (uuid)pathrequiredbuild id
Response
200Build
idstring (uuid)requiredbranchstring | nullcommitstring | nullpattern
^[0-9a-f]{40}$messagestring | nullthe commit's first line
statusstringrequiredone of
queued,running,succeeded,failed,cancelled,skippedtriggerstringrequiredone of
cli,gitversioninteger | nullerrorstring | nullcreated_atstring (date-time)requiredstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nullstagedbooleana production build held for its checks
promotionstringone of
none,waiting,promoted,blocked,supersededscanobject | nullthe dependency scan's summary
queueobject | nulla queued build's place in the team's queue
positioninteger1 is the team's next
aheadintegerrunningintegerlimitintegerthe team's concurrent builds
reasonstringone of
team_limit,waiting_for_builder
configBuildConfig | nullthe build configuration frozen when the build started
root_dirstringrequireda folder in the repository; empty: the root
ignore_commandstringrequiredexit 0 skips the build; empty: never skip
install_commandstringrequiredempty: detected
build_commandstringrequiredempty: detected
output_dirstringrequiredempty: detected
node_versionstring | nullrequirednull: the default (26)
one of
22,24,26,nullsecret_scanstringrequiredone of
block,warncachebooleanrequired
no_cachebooleanbuilt without the build cache
cacheobject | nullstatusstringone of
hit,miss,off,skipped,no_lockfilekeystringframeworkstringrestored_bytesintegersaved_bytesintegerevictedintegernotestring
hintobject | nulla failed build explained; show it above the log
kindstringone of
typescript,module_not_found,missing_env,out_of_memory,timeout,install_failed,secrets,no_output,build_command_failedtitlestringexplainstringfixstringfilestringlineintegercolumninteger
secretsobject | nullthe secret scan's summary
scannedbooleancountintegerhighintegerblockedbooleanpolicystringone of
block,warn
sbomobject | nullcomponentsintegerlock_filestring
provenanceobject | nullkey_idstringoutput_sha256string
skip_reasonstring | nullcancelled_bystring | null
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/logsA build's log#
1000 lines per call. Each step starts with a line ── <step> (unpack, install, build and deploy).
- 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 charactersidstring (uuid)pathrequiredbuild id
afterstringquerythe last line id received, <ms>-<n>
Response
200BuildLog
statusstringrequiredlinesobject[]requiredidstringrequiredtintegerlinestringrequired
last_idstringthe last entry read, shown or not: the next after
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_param |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/logs" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/cancelCancel a build#
A queued or running build; a running one stops and deploys nothing.
- 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 charactersidstring (uuid)pathrequiredbuild id
Response
200object
idstring (uuid)requiredstatusstringrequiredone of
cancelled
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: not_running (the build already finished) |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/cancel" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/redeployBuild the same source again#
The same source or commit as the build, with today's build configuration.
- 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 charactersidstring (uuid)pathrequiredbuild id
no_cachestringquery1: build without the build cache
one of
1,true
Response
201object
idstring (uuid)requiredstatusstringrequiredone of
queuedno_cachebooleanrequired
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: source_gone |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/redeploy" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/secretsA build's secret findings#
Where the secret scan found likely secrets (never the values).
- 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 charactersidstring (uuid)pathrequiredbuild id
Response
200SecretFindings
summaryobject | nullrequiredscannedbooleancountintegerhighintegerblockedbooleanpolicystring
findingsobject[]requiredrulestringdescriptionstringfilestringlineintegerconfidencestringone of
high,low
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/secrets" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/sbomA build's bill of materials#
The CycloneDX 1.5 document made from the build's lock file.
- 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 charactersidstring (uuid)pathrequiredbuild id
downloadstringquery1: as a file (content-disposition)
one of
1
Response
200objectapplication/vnd.cyclonedx+json
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found, no_sbom |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/sbom" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/builds/{id}/provenanceA build's provenance record#
Only a build that deployed has one.
- 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 charactersidstring (uuid)pathrequiredbuild id
Response
200ProvenanceRecord
statementProvenanceStatementrequiredtypestringone of
cloudhost.build-provenance/v1subjectobjectkindstringnamestringoutput_sha256stringbundle_sha256stringmanifest_sha256stringversioninteger
buildobjectidstring | nulltriggerstring | nullbranchstring | nullcommitstring | nullsource_sha256string | nulllock_filestring | nulllock_file_sha256string | nullsbom_sha256string | nullstarted_atstring | nullfinished_atstring | null
builderobjectnamestringisolationstringcachestring | null
issued_atstring (date-time)
signaturestringrequiredbase64
algorithmstringrequiredone of
ed25519key_idstringrequired
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found, no_provenance |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/builds/88e2fe1d-6d75-4de5-8c8f-27380ec66903/provenance" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/build-configGet the build configuration#
How the project is built, the Node.js versions offered, the plan's limits and the build cache.
- 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
200BuildConfigView
settingsBuildConfigrequiredroot_dirstringrequireda folder in the repository; empty: the root
ignore_commandstringrequiredexit 0 skips the build; empty: never skip
install_commandstringrequiredempty: detected
build_commandstringrequiredempty: detected
output_dirstringrequiredempty: detected
node_versionstring | nullrequirednull: the default (26)
one of
22,24,26,nullsecret_scanstringrequiredone of
block,warncachebooleanrequired
node_versionsstring[]requireddefault_node_versionstringrequiredlimitsobjectrequiredconcurrent_buildsintegercache_bytesinteger
cacheBuildCacherequiredentriesobject[]requiredkeystringframeworkstringbytesintegercreated_atstring (date-time)used_atstring (date-time)
bytesintegerrequiredlimit_bytesintegerrequiredthe plan's size: Hobby 500 MB, Pro 1 GB, Enterprise 2 GB
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/build-config" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/build-configChange the build configuration#
Only the fields sent change; null or an empty string puts a field back to its default. The next build uses them.
- 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
any of the fields; null or an empty string clears one
root_dirstring | nullup to 200 characters
ignore_commandstring | nullup to 500 characters
install_commandstring | nullup to 500 characters
build_commandstring | nullup to 500 characters
output_dirstring | nullup to 200 characters
node_versionstring | nullone of
22,24,26,nullsecret_scanstringone of
block,warncacheboolean
Response
200object
settingsBuildConfigrequiredroot_dirstringrequireda folder in the repository; empty: the root
ignore_commandstringrequiredexit 0 skips the build; empty: never skip
install_commandstringrequiredempty: detected
build_commandstringrequiredempty: detected
output_dirstringrequiredempty: detected
node_versionstring | nullrequirednull: the default (26)
one of
22,24,26,nullsecret_scanstringrequiredone of
block,warncachebooleanrequired
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_settings |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/site/build-config" \
-H "Authorization: Bearer $KEY" \
-d '{"root_dir":"…","ignore_command":"…","install_command":"…","build_command":"…","output_dir":"…","node_version":"22","secret_scan":"block","cache":true}'/v1/apps/{name}/build-cacheThe build cache#
What the project's build cache holds; the oldest entries go first when it is over the plan's size.
- 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
200BuildCache
entriesobject[]requiredkeystringframeworkstringbytesintegercreated_atstring (date-time)used_atstring (date-time)
bytesintegerrequiredlimit_bytesintegerrequiredthe plan's size: Hobby 500 MB, Pro 1 GB, Enterprise 2 GB
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/build-cache" \
-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
clearedintegerrequired
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site/build-cache" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/transferMove to another team#
Refused while any version binds a database, cache or bucket.
- Credential
- A dashboard session only (API keys are refused)
- Roles
- admin or owner in both teams
- Step-up
- With a dashboard session, a second factor confirmed in the last 10 minutes; API keys pass.
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
teamstring (uuid)required
Response
200object
movedstringtostring
Errors
| Status | Description |
|---|---|
| 400 | Bad request: same_team, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, step_up_required, session_only |
| 404 | Not found: not_found |
| 409 | Conflict: has_bindings |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/transfer" \
-H "Authorization: Bearer $SESSION" \
-d '{"team":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f"}'/v1/apps/{name}/domainsList the project's custom domains#
- 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
domainsDomain[]requirednamestringrequiredlowercase ASCII (an international name in its xn-- form)
apexstringrequiredthe registrable domain
typestringrequiredone of
apex,subdomainprojectobjectrequirednamestringkindstringone of
function,appproductstringone of
functions,apps
branchstring | nulla git branch: the domain serves its preview
servesstring | nullthe platform address it serves; null for a redirect
redirectobject | nulltostringstatusintegerone of
301,302,307,308
statestringrequiredone of
pending,verifying,valid,misconfigured,errorreasonstring | nullwhat is missing or wrong, for people
verifiedbooleanrequiredownership proven by the TXT record
recordsDomainRecord[]requiredthe records to set at the DNS provider
typestringrequiredone of
A,CNAME,TXTnamestringrequiredrelative to the registrable domain; @ is the domain itself
hoststringrequiredthe full name
valuestringrequiredpurposestringrequiredone of
routing,ownershipokbooleanrequiredfound as it should be at the last check
checksobject[]what the last lookup found
typestringhoststringokbooleanfoundstring[]
certificateobjectrequiredstatestringrequiredone of
none,issuing,valid,renewing,expirednot_beforestring (date-time)not_afterstring (date-time)issued_atstring (date-time)renew_errorstringnext_attempt_atstring (date-time)
urlstringrequiredchecked_atstring (date-time) | nullnext_check_atstring (date-time)created_atstring (date-time)alsoDomain[]add only: the www pair added with it
limitintegerdomains per project on the team's plan
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/domains" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/domainsAdd a custom domain#
Records: a subdomain is a CNAME to the platform's target, a registrable domain A records to the gateway addresses; a TXT record on the registrable domain proves ownership (one per team covers every name under it). States: pending, misconfigured, verifying (a certificate is being obtained), valid, error.
- 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
domainstringrequireda subdomain (shop.example.ir) or a registrable domain (example.ir)
wwwstringfor a root or www name: also add the other one, redirecting to the root or to www
one of
none,redirect-to-apex,redirect-to-wwwredirect_tostringanother domain of the project: answer with a redirect there
redirect_statusintegerone of
301,302,307,308· default308branchstringa git branch: serve its preview instead of production
Response
201Domain
namestringrequiredlowercase ASCII (an international name in its xn-- form)
apexstringrequiredthe registrable domain
typestringrequiredone of
apex,subdomainprojectobjectrequirednamestringkindstringone of
function,appproductstringone of
functions,apps
branchstring | nulla git branch: the domain serves its preview
servesstring | nullthe platform address it serves; null for a redirect
redirectobject | nulltostringstatusintegerone of
301,302,307,308
statestringrequiredone of
pending,verifying,valid,misconfigured,errorreasonstring | nullwhat is missing or wrong, for people
verifiedbooleanrequiredownership proven by the TXT record
recordsDomainRecord[]requiredthe records to set at the DNS provider
typestringrequiredone of
A,CNAME,TXTnamestringrequiredrelative to the registrable domain; @ is the domain itself
hoststringrequiredthe full name
valuestringrequiredpurposestringrequiredone of
routing,ownershipokbooleanrequiredfound as it should be at the last check
checksobject[]what the last lookup found
typestringhoststringokbooleanfoundstring[]
certificateobjectrequiredstatestringrequiredone of
none,issuing,valid,renewing,expirednot_beforestring (date-time)not_afterstring (date-time)issued_atstring (date-time)renew_errorstringnext_attempt_atstring (date-time)
urlstringrequiredchecked_atstring (date-time) | nullnext_check_atstring (date-time)created_atstring (date-time)alsoDomain[]add only: the www pair added with it
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_domain, reserved_domain, bad_redirect, bad_branch, bad_www, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, domain_limit |
| 404 | Not found: not_found |
| 409 | Conflict: domain_exists, domain_taken |
| 429 | Too many requests: rate_limited |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/domains" \
-H "Authorization: Bearer $KEY" \
-d '{"domain":"…"}'/v1/apps/{name}/domains/ibel.aiOne custom domain#
- 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 charactersdomainstringpathrequiredthe domain, e.g. shop.example.ir
Response
200Domain
namestringrequiredlowercase ASCII (an international name in its xn-- form)
apexstringrequiredthe registrable domain
typestringrequiredone of
apex,subdomainprojectobjectrequirednamestringkindstringone of
function,appproductstringone of
functions,apps
branchstring | nulla git branch: the domain serves its preview
servesstring | nullthe platform address it serves; null for a redirect
redirectobject | nulltostringstatusintegerone of
301,302,307,308
statestringrequiredone of
pending,verifying,valid,misconfigured,errorreasonstring | nullwhat is missing or wrong, for people
verifiedbooleanrequiredownership proven by the TXT record
recordsDomainRecord[]requiredthe records to set at the DNS provider
typestringrequiredone of
A,CNAME,TXTnamestringrequiredrelative to the registrable domain; @ is the domain itself
hoststringrequiredthe full name
valuestringrequiredpurposestringrequiredone of
routing,ownershipokbooleanrequiredfound as it should be at the last check
checksobject[]what the last lookup found
typestringhoststringokbooleanfoundstring[]
certificateobjectrequiredstatestringrequiredone of
none,issuing,valid,renewing,expirednot_beforestring (date-time)not_afterstring (date-time)issued_atstring (date-time)renew_errorstringnext_attempt_atstring (date-time)
urlstringrequiredchecked_atstring (date-time) | nullnext_check_atstring (date-time)created_atstring (date-time)alsoDomain[]add only: the www pair added with it
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/domains/domain" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/domains/ibel.aiRemove a custom domain#
Stops serving it and deletes its certificate; domains redirecting to it stop redirecting.
- 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 charactersdomainstringpathrequiredthe domain, e.g. shop.example.ir
Response
200object
namestringremovedboolean
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/site/domains/domain" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/domains/ibel.aiChange a domain's redirect or branch#
- 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 charactersdomainstringpathrequiredthe domain, e.g. shop.example.ir
Request bodyapplication/json
redirect_tostring | nullredirect_statusintegerone of
301,302,307,308branchstring | null
Response
200Domain
namestringrequiredlowercase ASCII (an international name in its xn-- form)
apexstringrequiredthe registrable domain
typestringrequiredone of
apex,subdomainprojectobjectrequirednamestringkindstringone of
function,appproductstringone of
functions,apps
branchstring | nulla git branch: the domain serves its preview
servesstring | nullthe platform address it serves; null for a redirect
redirectobject | nulltostringstatusintegerone of
301,302,307,308
statestringrequiredone of
pending,verifying,valid,misconfigured,errorreasonstring | nullwhat is missing or wrong, for people
verifiedbooleanrequiredownership proven by the TXT record
recordsDomainRecord[]requiredthe records to set at the DNS provider
typestringrequiredone of
A,CNAME,TXTnamestringrequiredrelative to the registrable domain; @ is the domain itself
hoststringrequiredthe full name
valuestringrequiredpurposestringrequiredone of
routing,ownershipokbooleanrequiredfound as it should be at the last check
checksobject[]what the last lookup found
typestringhoststringokbooleanfoundstring[]
certificateobjectrequiredstatestringrequiredone of
none,issuing,valid,renewing,expirednot_beforestring (date-time)not_afterstring (date-time)issued_atstring (date-time)renew_errorstringnext_attempt_atstring (date-time)
urlstringrequiredchecked_atstring (date-time) | nullnext_check_atstring (date-time)created_atstring (date-time)alsoDomain[]add only: the www pair added with it
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_redirect, bad_branch, nothing_to_change, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/apps/site/domains/domain" \
-H "Authorization: Bearer $KEY" \
-d '{"redirect_to":"…","redirect_status":301,"branch":"dev"}'/v1/apps/{name}/domains/ibel.ai/verifyCheck a domain's DNS now#
- 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 charactersdomainstringpathrequiredthe domain, e.g. shop.example.ir
Response
200Domain
namestringrequiredlowercase ASCII (an international name in its xn-- form)
apexstringrequiredthe registrable domain
typestringrequiredone of
apex,subdomainprojectobjectrequirednamestringkindstringone of
function,appproductstringone of
functions,apps
branchstring | nulla git branch: the domain serves its preview
servesstring | nullthe platform address it serves; null for a redirect
redirectobject | nulltostringstatusintegerone of
301,302,307,308
statestringrequiredone of
pending,verifying,valid,misconfigured,errorreasonstring | nullwhat is missing or wrong, for people
verifiedbooleanrequiredownership proven by the TXT record
recordsDomainRecord[]requiredthe records to set at the DNS provider
typestringrequiredone of
A,CNAME,TXTnamestringrequiredrelative to the registrable domain; @ is the domain itself
hoststringrequiredthe full name
valuestringrequiredpurposestringrequiredone of
routing,ownershipokbooleanrequiredfound as it should be at the last check
checksobject[]what the last lookup found
typestringhoststringokbooleanfoundstring[]
certificateobjectrequiredstatestringrequiredone of
none,issuing,valid,renewing,expirednot_beforestring (date-time)not_afterstring (date-time)issued_atstring (date-time)renew_errorstringnext_attempt_atstring (date-time)
urlstringrequiredchecked_atstring (date-time) | nullnext_check_atstring (date-time)created_atstring (date-time)alsoDomain[]add only: the www pair added with it
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/domains/domain/verify" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/build-settingsGet build settings#
- 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])?$
Response
200BuildSettings
smokebooleansmoke_pathstringtest_commandstring | nulltypecheckbooleantypecheck_commandstring | nullrequired_checksstring[]check_timeout_minutesintegerscan_fail_onstringone of
none,high,criticalplanstringappliesobjectthe same settings as the team's plan allows them today
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/build-settings" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/build-settingsChange build settings#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$
Request bodyapplication/json
only the fields sent change
smokebooleansmoke_pathstringup to 200 characters
test_commandstring | nullup to 300 characters
typecheckbooleantypecheck_commandstring | nullup to 300 characters
required_checksstring[]0–10 items
check_timeout_minutesinteger1–60
scan_fail_onstringone of
none,high,critical
Response
200BuildSettings
smokebooleansmoke_pathstringtest_commandstring | nulltypecheckbooleantypecheck_commandstring | nullrequired_checksstring[]check_timeout_minutesintegerscan_fail_onstringone of
none,high,criticalplanstringappliesobjectthe same settings as the team's plan allows them today
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_settings, bad_name, bad_status, bad_url |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Forbidden: forbidden, plan_required |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/apps/site/build-settings" \
-H "Authorization: Bearer $KEY" \
-d '{"smoke":true,"smoke_path":"…","test_command":"…","typecheck":true,"typecheck_command":"…","required_checks":["…"],"check_timeout_minutes":1,"scan_fail_on":"none"}'/v1/apps/{name}/deployments/{build}/checksA deployment's checks#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
Response
200DeploymentChecks
buildstring (uuid)promotionstringone of
none,waiting,promoted,blocked,supersededstagedbooleanversioninteger | nulldeadlinestring (date-time) | nullchecksCheck[]namestringrequiredsourcestringrequiredone of
builtin,externalstatusstringrequiredone of
pending,queued,running,passed,failed,timed_outrequiredbooleansummarystring | nullurlstring | nullattemptintegerstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nulllogstringthe end of its output; only on the single-check route
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/deployments/build/checks" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/deployments/{build}/checks/{check}One check, with its log#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
checkstringpathrequiredthe check's name; a '/' in it is sent as %2F
pattern
^[a-z0-9][a-z0-9._/-]{0,63}$
Response
200Check
namestringrequiredsourcestringrequiredone of
builtin,externalstatusstringrequiredone of
pending,queued,running,passed,failed,timed_outrequiredbooleansummarystring | nullurlstring | nullattemptintegerstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nulllogstringthe end of its output; only on the single-check route
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/deployments/build/checks/check" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/deployments/{build}/checks/{check}Report an external check (a CI)#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
checkstringpathrequiredthe check's name; a '/' in it is sent as %2F
pattern
^[a-z0-9][a-z0-9._/-]{0,63}$
Request bodyapplication/json
statusstringrequiredone of
running,passed,failedsummarystringup to 300 characters
urlstringup to 500 characters
logstringup to 65536 characters
Response
200Check
namestringrequiredsourcestringrequiredone of
builtin,externalstatusstringrequiredone of
pending,queued,running,passed,failed,timed_outrequiredbooleansummarystring | nullurlstring | nullattemptintegerstarted_atstring (date-time) | nullfinished_atstring (date-time) | nullsecondsinteger | nulllogstringthe end of its output; only on the single-check route
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_settings, bad_name, bad_status, bad_url |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: running, decided, not_waiting, superseded, too_many_checks, reserved_name |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/apps/site/deployments/build/checks/check" \
-H "Authorization: Bearer $KEY" \
-d '{"status":"running"}'/v1/apps/{name}/deployments/{build}/checks/{check}/rerunRun a check again#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
checkstringpathrequiredthe check's name; a '/' in it is sent as %2F
pattern
^[a-z0-9][a-z0-9._/-]{0,63}$
Response
200object
rerunstringone of
smoke,pending,buildbuildstring (uuid)
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: running, decided, not_waiting, superseded, too_many_checks, reserved_name |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/deployments/build/checks/check/rerun" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/deployments/{build}/promoteMake a deployment waiting on its checks live#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin
Parameters
namestringpathrequiredthe function's or app's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
Response
200object
buildstring (uuid)promotionstringversioninteger
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Forbidden: forbidden, plan_required |
| 404 | Not found: not_found |
| 409 | Conflict: running, decided, not_waiting, superseded, too_many_checks, reserved_name |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/deployments/build/promote" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/deployments/{build}/vulnerabilitiesVulnerable dependencies of a build#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
Response
200Vulnerabilities
buildstring (uuid)scanobjectstatusstringone of
ok,no_lockfile,unreadable,too_large,no_data,not_runlockfilestring | nullpackagesintegercountsobjectblockedboolean
vulnerabilitiesVulnerability[]packagestringversionstringseveritystringone of
critical,high,moderate,low,unknownadvisorystringaliasesstring[]titlestringfixed_versionstring | nulldevbooleanscorenumber | null
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/deployments/build/vulnerabilities" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/deployments/{build}/vulnerabilities/rescanScan a build's dependencies again#
- 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])?$buildstring (uuid)pathrequiredthe build's id (a deployment)
Response
200Vulnerabilities
buildstring (uuid)scanobjectstatusstringone of
ok,no_lockfile,unreadable,too_large,no_data,not_runlockfilestring | nullpackagesintegercountsobjectblockedboolean
vulnerabilitiesVulnerability[]packagestringversionstringseveritystringone of
critical,high,moderate,low,unknownadvisorystringaliasesstring[]titlestringfixed_versionstring | nulldevbooleanscorenumber | null
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 409 | Conflict: running, decided, not_waiting, superseded, too_many_checks, reserved_name |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/site/deployments/build/vulnerabilities/rescan" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/vulnerabilitiesThe project's dependency summary#
- 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])?$
Response
200object
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/apps/site/vulnerabilities" \
-H "Authorization: Bearer $KEY"