Skip to content
cloudhostDocs
API reference

Platform status

The status of the platform itself (not your projects), as on the status page; checked every minute. Incidents and maintenance, history, RSS and Atom, and subscriptions by email or SMS. No key needed.

GET/v1/status

The platform's status page#

The status of our own services, not your projects: the overall status, each component (dashboard, api, functions, apps, databases, caches, storage, builds, dns) with its current status, 90-day uptime and one entry a day (Tehran days, oldest first: the worst status that lasted a minute, the uptime, the minutes of each status and the incidents that touched it), open incidents, scheduled and running maintenance, the last 15 days' incidents and the ways to subscribe. Checked every minute; cached 15 s. Uptime counts a minute of major outage whole and of partial outage 30 %; degraded counts as up; announced maintenance is left out. Names and texts come in Persian and English ({fa, en}). Auth: none. CORS: *.

Credential
None

Response

200PlatformStatus

  • statusPlatformStatusValue
  • updated_atstring (date-time)
  • page_urlstring
  • componentsobject[]
  • incidentsPlatformIncident[]
  • maintenancePlatformIncident[]
  • recentPlatformIncident[]
  • channelsobject

Example

curl "https://api.ibel.ai/v1/status"
GET/v1/status/summary

The status in one line#

The overall status, the components that are not operational, open incidents and maintenance (what the dashboard's footer and cloudhost status show). Auth: none. CORS: *.

Credential
None

Response

200object

  • statusPlatformStatusValue
  • updated_atstring (date-time)
  • page_urlstring
  • componentsobject[]
  • incidentsobject[]
  • maintenanceobject[]

Example

curl "https://api.ibel.ai/v1/status/summary"
GET/v1/status/incidents

Incident history#

Past and current incidents and maintenance (not those still only scheduled), newest first, with every update. Page with before (the next_before of the page before). Auth: none.

Credential
None

Parameters

  • limitintegerquery

    1–50 · default 20

  • beforestring (date-time)query

    an RFC 3339 time; incidents that started before it

  • kindstringquery

    one of incident, maintenance

Response

200object

  • itemsPlatformIncident[]
    • idstring (uuid)
    • kindstring

      one of incident, maintenance

    • titleBilingual
    • impactstring

      one of none, minor, major, critical, maintenance

    • statusstring

      one of investigating, identified, monitoring, resolved, scheduled, in_progress, completed, cancelled

    • componentsobject[]
    • starts_atstring (date-time)
    • ends_atstring (date-time)
    • started_atstring (date-time)
    • resolved_atstring (date-time)
    • updated_atstring (date-time)
    • updatesobject[]
  • next_beforestring (date-time)

Errors

StatusDescription
400Bad request: bad_request, bad_param, bad_code

Example

curl "https://api.ibel.ai/v1/status/incidents"
GET/v1/status/incidents/{id}

One incident#

An incident or maintenance with every update, newest first. Auth: none.

Credential
None

Parameters

  • idstring (uuid)pathrequired

Response

200PlatformIncident

  • idstring (uuid)
  • kindstring

    one of incident, maintenance

  • titleBilingual
  • impactstring

    one of none, minor, major, critical, maintenance

  • statusstring

    one of investigating, identified, monitoring, resolved, scheduled, in_progress, completed, cancelled

  • componentsobject[]
  • starts_atstring (date-time)
  • ends_atstring (date-time)
  • started_atstring (date-time)
  • resolved_atstring (date-time)
  • updated_atstring (date-time)
  • updatesobject[]

Errors

StatusDescription
404Not found: not_found

Example

curl "https://api.ibel.ai/v1/status/incidents/88e2fe1d-6d75-4de5-8c8f-27380ec66903"
GET/v1/status/feed.rss

Incidents as RSS#

The last 30 incidents and maintenance with their updates, as RSS 2.0 (/v1/status/feed.atom: the same as Atom). lang=en for English. The status page serves the same feeds at /feed.rss and /en/feed.rss. Auth: none.

Credential
None

Parameters

  • langstringquery

    one of fa, en · default "fa"

Response

200stringapplication/rss+xml

Example

Request
curl "https://api.ibel.ai/v1/status/feed.rss"
GET/v1/status/feed.atom

Incidents as Atom#

The same as the RSS feed, as Atom. Auth: none.

Credential
None

Parameters

  • langstringquery

    one of fa, en · default "fa"

Response

200stringapplication/atom+xml

Example

Request
curl "https://api.ibel.ai/v1/status/feed.atom"
POST/v1/status/subscribe

Subscribe to incident updates#

By email (a confirmation link, valid 24 hours) or SMS (a 6-digit code, valid 10 minutes). Nothing is sent until it is confirmed; every message has an unsubscribe link. An address already subscribed gets a note saying so, not a second subscription. Bale, Eitaa and RSS need no subscription (see channels in GET /v1/status). Limits: 10 a network per hour, 5 SMS a network per day, 3 messages an address per day. Auth: none.

Credential
None

Request bodyapplication/json

  • channelstringrequired

    one of email, sms

  • targetstringrequired

    an email address, or an Iranian mobile number

  • langstring

    one of fa, en · default "fa"

  • componentsstring[]

    only updates touching these components; none for all

Response

200objectSent

  • sentboolean
  • confirmstring

    one of link, code

Errors

StatusDescription
400Bad request: bad_request, bad_param, bad_code
429Too many requests: rate_limited

Example

curl -X POST "https://api.ibel.ai/v1/status/subscribe" \
  -d '{"channel":"email","target":"…"}'
POST/v1/status/subscribe/confirm

Confirm a subscription#

{token} from the email's link, or {channel: "sms", target, code}. A code allows 5 tries. Auth: none.

Credential
None

Request bodyapplication/json

  • tokenstring
  • channelstring

    one of sms

  • targetstring
  • codestring

Response

200objectConfirmed

  • confirmedboolean
  • channelstring
  • langstring
  • componentsstring[]
  • manage_tokenstring

Errors

StatusDescription
400Bad request: bad_request, bad_param, bad_code

Example

curl -X POST "https://api.ibel.ai/v1/status/subscribe/confirm" \
  -d '{"token":"…","channel":"sms","target":"…","code":"123456"}'
POST/v1/status/unsubscribe

Unsubscribe#

{token}: the one in every message's unsubscribe link. Auth: none.

Credential
None

Request bodyapplication/json

  • tokenstringrequired

Response

200objectUnsubscribed

  • unsubscribedboolean

Errors

StatusDescription
404Not found: not_found

Example

curl -X POST "https://api.ibel.ai/v1/status/unsubscribe" \
  -d '{"token":"…"}'