Skip to content

Get an app store app

GET
/app-store/apps/{appSlug}
curl --request GET \
--url https://qinto-api.blotout.io/app-store/apps/facebook-capi \
--header 'Authorization: Bearer <token>'

Returns one app store app with its full listing: the description, the features, the screenshots, the publisher’s links, and what its newest approved version may do on a site. Call it before you install an app.

How it works

facts describes the newest approved version, and versions lists every approved one. not_found means no app has this slug, or the app is not in the app store.

Required permissions

  • None beyond a valid token; requires an OAuth token whose user belongs to a team
appSlug
required

Slug of the app, as the search operation returns it.

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

Example

facebook-capi

Slug of the app, as the search operation returns it.

The app and its listing.

Media typeapplication/json

An app in the app store, with its full listing.

object
slug
required

The app’s slug, to pass as appSlug.

string
name
required

The app’s display name.

string
tagline
required

One line on what the app does.

string
publisher
required

Display name of the organization that publishes the app.

string
categories
required

The categories the app is listed in.

Array<string>
description
required

The long description of the app.

string
features
required

The features the publisher highlights, in listing order.

Array<object>
object
title
required

The feature’s heading.

string
text
required

What the feature does.

string
supportContact
required

Where to ask the publisher for help: an email address or a URL.

string
websiteUrl
required

The publisher’s page for the app, or null when none is given.

string | null
documentationUrl
required

The app’s documentation, or null when none is given.

string | null
screenshots
required

The captions of the listing’s screenshots, in listing order. The API does not serve the images.

Array<object>
object
caption
required

What the screenshot shows.

string
facts
required

What the newest approved version declares.

object
version
required

The newest approved version, which the other facts describe.

string
capabilities
required

What the app may do and see on a site.

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>
consentCategory
required

The visitor consent the app runs under.

string
flows
required

Where the app plugs into the event pipeline.

Array<string>
vendors
required

The vendor accounts an install connects to.

Array<string>
tools
required

The tools the app offers to AI assistants.

Array<string>
roles

The app roles a team can give its members; absent when the app declares none.

Array<object>
object
key
required

The role’s name.

string
description

What the role may do in the app, when the app says.

string
runsCustomCode
required

Whether the app runs code that is not part of the app, such as code a merchant writes or an AI generates, in an isolated sandbox.

boolean
termsUrl
required

The publisher’s terms of service.

string
privacyUrl
required

The publisher’s privacy policy.

string
versions
required

The approved versions, newest first, 50 at most.

Array<object>
object
version
required

The version number.

string
approvedAt
required

When the version was approved for the app store; null when the time was not recorded.

string | null format: date-time

Example

{
"slug": "facebook-capi",
"name": "Facebook CAPI",
"tagline": "Send conversions to Meta from your server.",
"publisher": "Acme Dev",
"categories": [
"advertising"
],
"description": "Sends purchase and lead events to Meta.",
"features": [
{
"title": "Server-side delivery",
"text": "Events reach Meta even when the browser blocks the pixel."
}
],
"supportContact": "support@acme.example",
"websiteUrl": "https://acme.example/capi",
"documentationUrl": "https://acme.example/docs/capi",
"screenshots": [
{
"caption": "The event overview."
}
],
"facts": {
"version": "1.4.1",
"capabilities": {
"api": [
"track"
],
"data": [
"customProperties"
]
},
"consentCategory": "marketing",
"flows": [
"destination"
],
"vendors": [
"Meta"
],
"tools": [
"list_audiences"
],
"roles": [
{
"key": "viewer",
"description": "Reads reports."
}
],
"runsCustomCode": false,
"termsUrl": "https://acme.example/terms",
"privacyUrl": "https://acme.example/privacy"
},
"versions": [
{
"version": "1.4.1",
"approvedAt": "2026-09-30T12:00:00.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"
}