Skip to content

Search the app store

GET
/app-store/apps
curl --request GET \
--url 'https://qinto-api.blotout.io/app-store/apps?q=conversion%20tracking&category=advertising&limit=50&cursor=facebook-capi' \
--header 'Authorization: Bearer <token>'

Searches the apps in the app store, A–Z by name. Call it to find an app by words or by category; the slug of a result is the appSlug the other app store operation takes.

How it works

Search matches whole words, with common endings ignored: purchases finds purchase, but klav does not find Klaviyo. Page with cursor from the previous response’s nextCursor; a null cursor means the last page.

Required permissions

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

Words to search for. An app matches when its name holds every word, or its tagline and description together do. Omit it to list every app.

string

Example

conversion tracking

Words to search for. An app matches when its name holds every word, or its tagline and description together do. Omit it to list every app.

category

Return only apps listed in this category.

string
Allowed values: advertising analytics consent_privacy customer_data email_sms personalization security developer_tools

Example

advertising

Return only apps listed in this category.

limit

How many apps to return, 1–200. The default is 50.

integer
>= 1 <= 200

Example

50

How many apps to return, 1–200. The default is 50.

cursor

Continue after this app slug, from a previous response’s nextCursor.

string

Example

facebook-capi

Continue after this app slug, from a previous response’s nextCursor.

The page of apps.

Media typeapplication/json
object
records
required

The page of apps, A–Z by name.

Array<object>

An app in the app store, as a search result.

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

Pass as cursor for the next page, or null on the last one.

string | null

Example

{
"records": [
{
"slug": "facebook-capi",
"name": "Facebook CAPI",
"tagline": "Send conversions to Meta from your server.",
"publisher": "Acme Dev",
"categories": [
"advertising"
]
}
],
"nextCursor": "facebook-capi"
}

invalid_body — The JSON body is unparseable or failed schema validation; details pinpoints the offending fields when the body could be parsed.

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