Skip to content

Get an installed app

GET
/teams/{teamId}/domains/{domainId}/apps/{appSlug}
curl --request GET \
--url https://qinto-api.blotout.io/teams/7b8d1a52-6c1e-4b6f-9a30-2f8a54d1c3e9/domains/3f2a9c81-5d47-4e0b-8c66-91b2a7f04d15/apps/facebook-capi \
--header 'Authorization: Bearer <token>'

Returns one installed app in full: versions and switch, the developer’s legal documents, the approved capabilities, the settings each install takes, and each install’s stored values and configuration state. Call it before configuring an install. Secret values are write-only and never part of this shape.

Required permissions

  • domain: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.

appSlug
required

Immutable slug of the app, as shown by the list operation.

string
/^[a-z][a-z0-9-]{2,29}$/

Example

facebook-capi

Immutable slug of the app, as shown by the list operation.

The installed app.

Media typeapplication/json
object
app
required

An app installed on a site, with its versions, switch, and install summary.

object
domainAppId
required

Server-assigned id of this installation.

string
slug
required

Immutable slug the app runs under. Address it in the other site-app operations.

string
name
required

Display name of the app.

string
description
required

The app’s summary; null when not set.

string | null
flows
required

What the app does with events: reshape them at ingest (transform), receive them after commit (destination), or both.

Array<string>
Allowed values: transform destination
consentCategory
required

The consent category gating the app’s delivery on customer pages.

string
enabled
required

The app-level kill switch; a disabled app receives nothing.

boolean
desiredVersion
required

The version selected for this site.

string
deployedVersion
required

The version the site actually runs; null while the first deployment is pending.

string | null
ui
required

Whether the deployed version ships an embedded UI panel; false while no version is deployed.

boolean
installCount
required

How many installs of the app the site has.

integer
installLabels
required

The installs’ labels, in install order.

Array<string>
pendingGrantCount
required

How many app-permission requests involving this app await a decision.

integer
variables
required

The settings each install takes, as the version the site is set to declares them, in manifest order.

Array<object>

One setting a site manager fills in for each install of an app.

object
name
required

The name to send the value under when configuring an install.

string
kind
required

A plain value is readable back; a secret one is write-only and never returned.

string
Allowed values: plain secret
type
required

The value it takes: a string for text and password, a boolean for toggle, for select the value of one of options or an empty string for none, and for multiselect a list of options values, empty for none.

string
Allowed values: text password toggle select multiselect
label
required

Display label the manifest gives the variable.

string
required
required

Whether an install stays inactive until it has a value.

boolean
helpText
required

One-line guidance the manifest supplies, or null when it supplies none.

string | null
helpUrl
required

Link to the vendor’s own documentation for this value, or null when the manifest supplies none.

string | null
options
required

The choices of a select or multiselect, in manifest order, or null for every other type.

Array<object> | null

One choice of a select or multiselect variable.

object
value
required

The value to send and the value stored when this option is picked.

string
label
required

The text a form shows for this option.

string
default
required

Whether a form pre-selects this option while the install has no value. The platform never stores a default on its own.

boolean
legal
required

The developer’s legal documents, snapshotted with the installed version.

object
termsUrl
required

The developer’s terms for this app.

string
privacyUrl
required

The developer’s privacy policy for this app.

string
capabilities
required

What the installed version may do and see, as approved at install.

object
api
required

The site-API scopes the app may call with its own token.

Array<string>
data
required

The event-data buckets delivered to the app.

Array<string>
multipleInstalls
required

Whether the app supports more than one install per site.

boolean
endpoints
required

The HTTP endpoints the deployed version declares; empty while no version is deployed. Each is served at https://<site domain>/app/<slug><path>, one URL for every install.

Array<object>

An HTTP endpoint the app declares, served on the site’s own domain.

object
path
required

The path the app declares, appended to /app/<slug>. A :name segment is a parameter matching one segment, so the URL is a pattern rather than a fixed address.

string
methods
required

The HTTP methods the endpoint answers; any other method is refused before the app runs.

Array<string>
Allowed values: GET POST PUT PATCH DELETE
auth
required

How the caller authenticates: public forwards unauthenticated for vendor webhooks, token requires a worker access token granting the request path the caller asked for, and that method, and visitor admits only the app’s own browser code, called by a site visitor.

string
Allowed values: public token visitor
mode
required

How the request reaches the installs: webhook delivers it to every active install and acknowledges once, api passes the single install’s response through.

string
Allowed values: webhook api
capture
required

What the deployed version records against each visitor; both lists are empty while no version is deployed.

object
queryParams
required

Query parameters the app records against each visitor, read from the page URL.

Array<object>
object
name
required

The name read from the page.

string
type
required

What the value is: attribution for a click or campaign id that ties a visit to its source, identity for a vendor id that names the visitor across visits.

string
Allowed values: attribution identity
expiresInSeconds

How long a recorded value stays readable by the app, measured from the first time that value was seen. Absent means it is kept for the life of the visitor profile.

number
cookies
required

Cookies the app records against each visitor, read in the page. An HttpOnly cookie is never readable there.

Array<object>
object
name
required

The name read from the page.

string
type
required

What the value is: attribution for a click or campaign id that ties a visit to its source, identity for a vendor id that names the visitor across visits.

string
Allowed values: attribution identity
expiresInSeconds

How long a recorded value stays readable by the app, measured from the first time that value was seen. Absent means it is kept for the life of the visitor profile.

number
installs
required

The app’s installs on this site, in install order.

Array

One install of an app on a site, with its configuration state and stored values.

object
appInstallId
required

Id of this install.

string
ordinal
required

The install’s permanent ordinal; never reused after removal.

integer
label
required

The label every surface shows for this install.

string
enabled
required

The install’s own switch, beneath the app-level one.

boolean
geoFilter
required
Any of:

Where the install runs for visitors’ browser sessions. Each entry is an ISO 3166-1 alpha-2 country code (SI), EU for the European Union, or an ISO 3166-2 code for one of the 50 US states or the District of Columbia (US-CA). The install runs only when the visitor’s location is known, the include list is empty or one of its entries matches, and no exclude entry matches. A country code matches that country, EU matches a country in the European Union, and a state code matches a US visitor in that state. The location is unknown, and the install does not run, when the visitor’s country is not reported, when a list names a US state and a US visitor’s state is not reported, or when a list holds EU and the visitor’s location carries no EU flag. Server SDK events, schedules, webhooks, app endpoints, MCP tools and calls from other apps are not filtered.

object
include
required

Locations the install runs in; empty means every location the exclude list allows.

Array<string>
exclude
required

Locations the install never runs in.

Array<string>
active
required

Whether the install is dispatched to: both switches on and every required variable set.

boolean
missingRequired
required

Required variables the install has not completed; empty when fully configured.

Array<string>
secretsSet
required

Which secret variables are set. Secret values are write-only and never returned.

Array<string>
values
required

The stored plain values, keyed by variable name. Secrets never appear here; see secretsSet.

object
key
additional properties
Any of:

The value of a text, password or select variable.

string
grants
required

The permission requests involving this app on this site.

Array<object>

A private app-to-app permission request on this site.

object
appRpcGrantId
required

Id of the permission request.

string
callerAppSlug
required

The app asking to call.

string
callerAppName
required

The calling app’s display name.

string
providerAppSlug
required

The app being called.

string
providerAppName
required

The called app’s display name.

string
functions
required

The private functions the caller wants.

Array<string>
status
required

The site’s decision on the request.

string
Allowed values: pending approved revoked
lifecycleDeliveries
required

Recent lifecycle-hook deliveries. Previous setting and secret snapshots are never returned.

Array<object>

Recent advisory lifecycle-hook delivery state.

object
eventId
required

Stable lifecycle event id and delivery idempotency key.

string
type
required

Lifecycle transition, or deleteRequest for a delete request, sent to the app.

string
Allowed values: installed configurationChanged enabled disabled versionChanged uninstalled deleteRequest
status
required

Current best-effort delivery state.

string
Allowed values: pending delivering delivered failed expired skipped
attempts
required

Delivery attempts made so far.

integer
lastError
required

Redacted last delivery error, when one exists.

string | null
createdAt
required

When the lifecycle event was created, as an ISO 8601 UTC timestamp.

string format: date-time
deliveredAt
required

When the hook completed, or null until it succeeds.

string format: date-time

Example

{
"app": {
"domainAppId": "6c5b4a39-2817-4d6e-9f0a-1b2c3d4e5f6a",
"slug": "facebook-capi",
"name": "Facebook CAPI",
"description": "Send events to the Facebook Conversions API.",
"flows": [
"destination"
],
"consentCategory": "marketing",
"enabled": true,
"desiredVersion": "1.4.1",
"deployedVersion": "1.4.0",
"ui": false,
"installCount": 2,
"installLabels": [
"Facebook (EU)",
"Facebook (US)"
],
"pendingGrantCount": 1
},
"variables": [
{
"name": "PIXEL_ID",
"kind": "plain",
"type": "text",
"label": "Pixel id",
"required": true,
"helpText": "Found under Data sources in Meta Events Manager.",
"helpUrl": "https://developers.example.com/pixel-id",
"options": null
}
],
"legal": {
"termsUrl": "https://example.com/legal/terms",
"privacyUrl": "https://example.com/legal/privacy"
},
"capabilities": {
"api": [
"track"
],
"data": [
"customProperties"
]
},
"multipleInstalls": true,
"endpoints": [
{
"path": "/webhook",
"methods": [
"POST"
],
"auth": "public",
"mode": "webhook"
}
],
"capture": {
"queryParams": [
{
"name": "fbclid",
"type": "attribution",
"expiresInSeconds": 604800
}
],
"cookies": [
{
"name": "_fbp",
"type": "identity"
}
]
},
"installs": [
{
"appInstallId": "8d7c6b5a-4938-4271-a605-9e8f7a6b5c4d",
"ordinal": 1,
"label": "Facebook (EU)",
"enabled": true,
"geoFilter": {
"include": [
"EU"
],
"exclude": []
},
"active": false,
"missingRequired": [
"ACCESS_TOKEN"
],
"secretsSet": [
"ACCESS_TOKEN"
],
"values": {
"PIXEL_ID": "1234567890"
}
}
],
"grants": [
{
"appRpcGrantId": "9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a",
"callerAppSlug": "facebook-capi",
"callerAppName": "Facebook CAPI",
"providerAppSlug": "consent-vault",
"providerAppName": "Consent Vault",
"functions": [
"record"
],
"status": "pending"
}
],
"lifecycleDeliveries": [
{
"eventId": "9e8d7c6b-5a49-4382-b716-0f9e8d7c6b5a",
"type": "installed",
"status": "pending",
"attempts": 1,
"lastError": "control_timeout",
"createdAt": "2026-08-24T10:30:00.000Z",
"deliveredAt": "2026-08-24T10:30:01.000Z"
}
]
}

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."
}

not_found — The addressed resource does not exist within this team; check the id and 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: not_found

Example

{
"error": "not_found"
}

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"
}