Onboarding
The first-run flow, the team's getting-started steps and each project's production checklist.
/v1/me/onboardingThe first-run flow#
The signed-in person's first-run flow: its steps in order with their status (done, skipped, todo; auto when real state ticked it), the next step, whether it is complete or should be shown, the facts behind it, the current team, and the MCP setup for AI tools.
- Credential
- A dashboard session only (API keys are refused)
- Roles
- Any role
Response
200Onboarding
stateobjectwhat was saved (step, done, skipped, team_kind, plan, build, started_at, dismissed_at, completed_at, celebrated)
stepsobject[]keystringone of
welcome,team,plan,build,cli,git,agentoptionalbooleanstatusstringone of
done,skipped,todoautoboolean
nextstring | nullcompletebooleanshowbooleanfactsmap of booleanteamobjectidstring (uuid)namestringpersonalbooleanplanstringrolestring
agentobjectthe MCP setup for AI tools, the key as a placeholder
namestringurlstringsnippetsmap of string
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/me/onboarding" \
-H "Authorization: Bearer $SESSION"/v1/me/onboardingSave progress in the first-run flow#
Every field optional: step (where the person is), done and skipped (lists of steps), team_kind (personal or team), plan (hobby or pro, the choice; the plan itself changes with POST /v1/billing/plan), build (starter, upload, import, git, cli, later), dismissed, completed, restart (reopen it), celebrated (a project id whose first deploy was shown). Unknown fields are refused. Answers like GET. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- Roles
- Any role
Request bodyapplication/json
stepstringone of
welcome,team,plan,build,cli,git,agentdonestring[]skippedstring[]team_kindstringone of
personal,teamplanstringone of
hobby,probuildstringone of
starter,upload,import,git,cli,laterdismissedbooleancompletedbooleanrestartbooleancelebratedstring (uuid)
Response
200Onboarding
stateobjectwhat was saved (step, done, skipped, team_kind, plan, build, started_at, dismissed_at, completed_at, celebrated)
stepsobject[]keystringone of
welcome,team,plan,build,cli,git,agentoptionalbooleanstatusstringone of
done,skipped,todoautoboolean
nextstring | nullcompletebooleanshowbooleanfactsmap of booleanteamobjectidstring (uuid)namestringpersonalbooleanplanstringrolestring
agentobjectthe MCP setup for AI tools, the key as a placeholder
namestringurlstringsnippetsmap of string
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_request, bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/me/onboarding" \
-H "Authorization: Bearer $SESSION" \
-d '{"step":"welcome","done":["…"],"skipped":["…"],"team_kind":"personal","plan":"hobby","build":"starter","dismissed":true,"completed":true,"restart":true,"celebrated":"8c1e0c55-1f2a-4d3b-9e8f-0a1b2c3d4e5f"}'/v1/team/getting-startedThe team's getting-started steps#
The team's first steps, each ticked from real state: project, deploy, git, domain, invite (shared teams only), cli, agent; show is false once all are done or the person dismissed the card.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Response
200GettingStarted
itemsobject[]keystringone of
project,deploy,git,domain,invite,cli,agentdoneboolean
doneintegertotalintegercompletebooleandismissedbooleanshowbooleanfirst_liveobject | nullnamestringkindstringurlstring
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/team/getting-started" \
-H "Authorization: Bearer $KEY"/v1/team/getting-started/dismissHide the getting-started card#
For this person. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- Roles
- Any role
Response
200object
dismissedboolean
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/team/getting-started/dismiss" \
-H "Authorization: Bearer $SESSION"/v1/team/getting-started/dismissShow the getting-started card again#
Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- Roles
- Any role
Response
200object
dismissedboolean
Errors
| Status | Description |
|---|---|
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/team/getting-started/dismiss" \
-H "Authorization: Bearer $SESSION"/v1/functions/{name}/checklistThe production checklist#
What is left before the project is ready for production, each item ticked from its real state: git (a connected repository or a git push), domain, preview (a branch deployment), env (environment variables), alert, analytics (web analytics on). dismissed marks what this person hid; complete is true when every item is done or hidden.
- 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
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
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/functions/my-api/checklist" \
-H "Authorization: Bearer $KEY"/v1/functions/{name}/checklist/dismissHide a checklist item, or the checklist#
Body {"item": "<key>"} hides one item; an empty body hides the whole card. For this person. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- 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
Request bodyapplication/json
itemstringone of
git,domain,preview,env,alert,analytics
Response
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_item |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/functions/my-api/checklist/dismiss" \
-H "Authorization: Bearer $SESSION" \
-d '{"item":"git"}'/v1/functions/{name}/checklist/dismissShow the checklist again#
Shows the card and every item again; ?item= for one. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- 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 charactersitemstringqueryone of
card,git,domain,preview,env,alert,analytics
Response
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_item |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/functions/my-api/checklist/dismiss" \
-H "Authorization: Bearer $SESSION"/v1/apps/{name}/checklistThe production checklist#
What is left before the project is ready for production, each item ticked from its real state: git (a connected repository or a git push), domain, preview (a branch deployment), env (environment variables), alert, analytics (web analytics on). dismissed marks what this person hid; complete is true when every item is done or hidden.
- 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
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
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/my-api/checklist" \
-H "Authorization: Bearer $KEY"/v1/apps/{name}/checklist/dismissHide a checklist item, or the checklist#
Body {"item": "<key>"} hides one item; an empty body hides the whole card. For this person. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- 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
Request bodyapplication/json
itemstringone of
git,domain,preview,env,alert,analytics
Response
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_item |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/apps/my-api/checklist/dismiss" \
-H "Authorization: Bearer $SESSION" \
-d '{"item":"git"}'/v1/apps/{name}/checklist/dismissShow the checklist again#
Shows the card and every item again; ?item= for one. Needs a dashboard session.
- Credential
- A dashboard session only (API keys are refused)
- 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 charactersitemstringqueryone of
card,git,domain,preview,env,alert,analytics
Response
200Checklist
projectobjectidstring (uuid)namestringkindstringone of
app,function
itemsobject[]keystringone of
git,domain,preview,env,alert,analyticsdonebooleandismissedboolean
doneintegertotalintegercompletebooleandismissedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_item |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: session_only |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/apps/my-api/checklist/dismiss" \
-H "Authorization: Bearer $SESSION"