Skip to content

Read app errors

GET
/teams/{teamId}/domains/{domainId}/app-errors
curl --request GET \
--url 'https://qinto-api.blotout.io/teams/7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9/domains/3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15/app-errors?start=2026-08-22T00%3A00%3A00.000Z&end=2026-08-29T00%3A00%3A00.000Z&timeZone=Europe%2FLjubljana&appSlug=facebook-capi&appInstallId=8d7c6b5a-4938-4271-a605-9e8f7a6b5c4d&category=delivery&limit=50&cursorAt=2026-08-28T23%3A59%3A59.000Z&cursorId=9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a' \
--header 'Authorization: Bearer <token>'

Lists the failures the site’s apps reported over a time range, newest first, each with the app’s own description of what it was doing.

How it works

Page with cursorAt and cursorId from the previous response’s nextCursor; a null cursor means the last page. state says how the read ended, and only ok carries records.

Required permissions

  • domain:realtime_logger:read on all domains, or on the addressed domain when its id is in the route
teamId
required

Unique id (UUID) of the team that owns the addressed resources, as shown in the team settings on the Blotout platform.

string format: uuid

Example

7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9

Unique id (UUID) of the team that owns the addressed resources, as shown in the team settings on the Blotout platform.

domainId
required

Unique id (UUID) of the site, as returned by the site operations.

string format: uuid

Example

3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15

Unique id (UUID) of the site, as returned by the site operations.

start
required

Start of the half-open range, as an ISO 8601 instant.

string format: date-time

Example

2026-08-22T00:00:00.000Z

Start of the half-open range, as an ISO 8601 instant.

end
required

End of the half-open range, exclusive, as an ISO 8601 instant.

string format: date-time

Example

2026-08-29T00:00:00.000Z

End of the half-open range, exclusive, as an ISO 8601 instant.

timeZone
required

IANA timezone the buckets are cut in, so a day boundary is the reader’s own.

string

Example

Europe/Ljubljana

IANA timezone the buckets are cut in, so a day boundary is the reader’s own.

appSlug

Report on one app only.

string

Example

facebook-capi

Report on one app only.

appInstallId

Report on one installation only.

string format: uuid

Example

8d7c6b5a-4938-4271-a605-9e8f7a6b5c4d

Report on one installation only.

category

Report on one error category only.

string

Example

delivery

Report on one error category only.

limit

How many records to return, 1–100.

integer
>= 1 <= 100

Example

50

How many records to return, 1–100.

cursorAt

Continue after this record’s instant, from a previous response’s cursor.

string format: date-time

Example

2026-08-28T23:59:59.000Z

Continue after this record’s instant, from a previous response’s cursor.

cursorId

Continue after this record’s id, from a previous response’s cursor. Send it with cursorAt.

string

Example

9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a

Continue after this record’s id, from a previous response’s cursor. Send it with cursorAt.

The failures, or why there are none.

Media typeapplication/json
object
state
required

How the read ended. no_dataset means the site has recorded nothing yet, too_broad that the selection must be narrowed, and unavailable / rate_limited that the provider refused; only ok carries data.

string
Allowed values: ok no_dataset too_broad forbidden unavailable rate_limited
records
required

The page of failures, newest first; empty unless state is ok.

Array<object>

One failure an app reported on this site.

object
at
required

When the app failed, as an ISO 8601 UTC timestamp.

string format: date-time
rowId
required

Id of this record; pair it with at to page.

string
appSlug
required

The app that failed.

string
appName
required

The app’s display name.

string
appInstallId
required

The installation that failed.

string
installLabel
required

That installation’s label.

string
appVersion
required

The app version that was serving.

string
category
required

What kind of work failed.

string
action
required

The operation the app was running.

string
description
required

What the app was doing, in its own words.

string
payload
required

The app’s own context for the failure.

string
error
required

The failure itself.

string
nextCursor
required

Where the next page starts, or null on the last one.

object
at
required

Pass as cursorAt.

string
id
required

Pass as cursorId.

string

Example

{
"state": "ok",
"records": [
{
"at": "2026-08-28T10:04:31.000Z",
"rowId": "af31c0d2",
"appSlug": "facebook-capi",
"appName": "Facebook CAPI",
"appInstallId": "8d7c6b5a-4938-4271-a605-9e8f7a6b5c4d",
"installLabel": "Facebook (EU)",
"appVersion": "1.4.1",
"category": "delivery",
"action": "onEvent",
"description": "send purchase",
"payload": "{\"orderId\":\"1234\"}",
"error": "HTTP 429 from graph.facebook.com"
}
],
"nextCursor": {
"at": "2026-08-28T23:59:59.000Z",
"id": "af31c0d2"
}
}

invalid_params — A path parameter failed validation (for example a malformed UUID); details pinpoints the offending parameter.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: invalid_params
details

Field-level validation errors: a tree keyed by input property, each node carrying an errors array of human-readable messages. Render it to help the caller correct the request.

object
key
additional properties

Example

{
"error": "invalid_params",
"details": {
"errors": [],
"properties": {
"teamId": {
"errors": [
"Invalid UUID"
]
}
}
}
}

unauthenticated — The Authorization: Bearer token is missing, malformed, or no longer valid. Generate a team API token or obtain a new OAuth access token.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: unauthenticated

Example

{
"error": "unauthenticated"
}

forbidden — The bearer credential lacks the required permission or belongs to another team, or its user lacks the organization role a developer operation needs. Update its policies, use a credential bound to the addressed team, or ask an organization owner for the role; message states the reason when one is known.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: forbidden
message

Human-readable reason for this specific failure, intended for display — do not parse it programmatically.

string

Example

{
"error": "forbidden",
"message": "The Cloudflare API token is invalid or expired."
}

internal — Unexpected server error. Nothing is guaranteed to have been persisted; idempotent operations are safe to retry.

Media typeapplication/json
object
error
required

Machine-readable error slug; switch on this value rather than on the HTTP status alone.

string
Allowed values: internal

Example

{
"error": "internal"
}