Skip to main content

Scrunch AI Early-Access API Documentation

Learn how to authenticate, access endpoints, and integrate Scrunch data programmatically.

Updated yesterday

Last Updated: September 22nd, 2025

API Basics

Endpoints

Scrunch APIs are hosted under the api.scrunchai.com domain.

Authentication

API access is authenticated via a shared secret bearer token, which you can pass us in the standard Authentication header.

For example, via curl:

curl -H "Authorization: Bearer ${SCRUNCH_API_TOKEN}" "https://api.scrunchai.com/v1/${SCRUNCH_BRAND_ID}/prompts"

Authorization & Scope

Workspace Scope

Scrunch API tokens can be scoped for:

  • One or more Brands

  • An entire Organization (Scrunch subscription)

A Brand is Scrunch's unit of organization for data & reporting, including clients / customers of partners. All Scrunch query APIs and most data APIs operate for a specific brand's context. We currently do not expose cross-brand reporting capabilities (e.g. each brand must be queried individually) but we may support this in the future. You may safely share read-only brand-scoped API tokens (or data access methods that use an API token under the hood, such as a BI connector) with clients if needed.

An Organization represents a Scrunch AI customer, regardless of the number of brands they have. Organization-scoped API keys can be used for internal reporting or for programmatically configuring many Scrunch brands (e.g. automated client onboarding.) In agency or MSP scenarios, organization-scoped keys should not be exposed to individual clients, as this would enable them to access other client data.

Operation Scope

The operational scopes Scrunch supports are:

  • Query – Query data for authorized brands

  • Configure – Write configuration data for an authorized brand, such as updating prompts or brand descriptions.

  • Create Brand – Create a new brand.

  • Responses – Access raw AI response data.

By default, API credentials are scoped for all brands attached to your organization, including future brands created via the web application or via API. However, with the exception of the List Brands and Create Brand APIs, all API calls must include a specific brand ID to function. The API does not yet support e.g. running reporting queries across multiple brands at the same time.

If desired, API credentials can be restricted to specific brand(s) for reporting purposes – for example, if you are an agency and are required to integrate into client reporting tools, Scrunch can provide an API credential that is limited to only their specific brand(s) data. Reach out to support@scrunchai.com if this is needed.

Obtaining an API token

Organization administrators (typically the person who signed up for Scrunch AI) can create API keys by accessing the Organization > Settings menu item in the left sidebar. If you can't locate your organization administrator, or they don't see this option, contact us at support@scrunchai.com.

Navigate to "API Keys" and click "Add API Key".

Configure the scopes appropriately (see above section for scope definitions.)

API Format

The API always returns responses in JSON format.

Query APIs accept parameters via query parameters:

curl -H "Authorization: Bearer ${SCRUNCH_API_TOKEN}" https://api.scrunchai.com/v1/${SCRUNCH_BRAND_ID}/prompts?stage=awareness

Mutation APIs generally accept JSON request bodies.

curl -H "Content-Type: application/json" -H "Authorization: Bearer ${SCRUNCH_API_TOKEN}" -d '{"prompt": "Sample prompt", "tags": ["tag_a", "tag_b"]}' https://api.scrunchai.com/v1/${SCRUNCH_BRAND_ID}/prompts

API Catalog

Summary of available APIs

API

Description

Use Cases

Availability

Scope(s)

Query API

Flexible reporting API for querying both aggregate and granular metrics about brand presence, position, sentiment, source citation frequency, etc.

Automated reporting

Integration with third-party BI or data analytics tools

Data source for ETL (e.g. via Airbyte)

Generally available

Query

Configuration API

Manage configuration details for one or more brand(s) in Scrunch

Scaled, programmatic client management

Available to agency & enterprise partners

Query

Configure

Brand Creation

Responses API

Access a feed of responses for specific prompt(s), including response text, citations, and individual presence, position, sentiment, and citation scores.

UI support, advanced data analysis

On request

-

(Contact Scrunch Support or your CSM for access)

Query API

The Query API allows retrieval of analytics data across various dimensions and metrics in a flexible way. Generally, the metrics and dimensions operate identically to the filters & metrics in the Scrunch web application. The API is designed to support integration with common reporting tools.

Operations

Endpoint

HTTP Method

Name

Notes

Status

Scope

/v1/{brand_id}/query

GET

Query performance data

Pass fields to customize data retrieved and aggregations

Live

Query

Aggregation

The Query API auto-aggregate metrics for any specified dimensions. For example, if you specify ?fields=tag,brand_presence_percentage you will receive the average brand presence for each tag.

Pagination

By default the Query API is configured to return a very large number of results (up to 50,000) for ease of integration into BI tools that may not support paginating results sets. Pagination is supported via limit and offset parameters. However, if you find yourself needing to paginate the Query API, it's highly likely that you are specifying too granular a combination of fields.

Caution!

The Query API allows specifying many dimensions for reporting at once. Specifying granular combinations of dimensions (e.g. date,prompt_id,source_url,competitor_id) may cause very large result sets – upwards of 1 million rows for customers with many prompts configured.

In our experience, specifying all dimensional fields together does not produce usable data sets – it's often better to query separately for, for example, date,prompt_id,prompt,persona_id,ai_platform,branded,responses,brand_presence_percentage,brand_sentiment_score,brand_position_score and then date,prompt_id,source_url,source_type and then date,prompt_id,competitor_name,competitor_presence_percentage and stitch them together.

Combining all these dimensions into one query will, for instance, give you a brand_presence_percentage metric that is specific to just responses for a particular prompt where a particular competitor shows up and a particular source URL is also cited. We find metrics at this level are usually not useful for straightforward aggregation and reporting. If you're looking for raw data for more sophisticated analysis, please contact your CSM for access to the Responses API.

The following dimensional fields are many-to-many with prompts and therefore can produce large result sets when combined:

  • ai_platform

  • tag

  • prompt_topic

  • competitor_id

  • competitor_name

  • source_url

  • source_type

Recommended Use

  • Use date_week or date_month to aggregate data over time for historical reporting. Scrunch does not collect data for every configured prompt every day, so day-level data will show variation.

  • Avoid using granular combinations like source_url,competitor_name. Because competitors are based on mentions in the response (including citations), this will result in retrieving a row for every URL present in every response a competitor is mentioned in, which is usually not what you want.

  • The various text dimension fields (persona name, prompt, competitor name) are generally unique. It's not necessary to include the ID dimensions for disambiguation; we include them here in case you need to align API data with other reporting.

Filtering Parameters

Currently the Query API only supports filtering on date range. Pagination parameters can also be set (see above.)

Name

Format

Constraints

start_date

YYYY-MM-DD

Must be within the last 90 days.

end_date

YYYY-MM-DD

Must be after the start date.

offset

Number

Defaults to 0

limit

Number

Defaults to 50,000

Fields

Specify these in the fields= array to retrieve them. Dimensions determine how metrics are grouped. Querying a dimension by itself will simply give you the unique values for that dimension. Querying a metric by itself will give you the overall aggregate of that metric, which may or may not be useful.

Dimensions

Name

JSON Type

Semantic Type

Constraints

Relationship with Prompt

prompt_id

Number

Integer

-

prompt

String

Text

-

date_month

String

Date (truncated to start of month)

Only last 90 days of data

Many to many

date_week

String

Date (truncated to start of calendar week)

Only last 90 days of data

Recommend keeping filters week-aligned

Many to many

date

String

Date

Only last 90 days of data

Many to many

source_url

String

URL

Many to many

source_type

String

Enum

Brand, Competitor, Other

Many to many

persona_id

Number

Integer

One to many (persona has multiple prompts, prompt has a single persona)

persona_name

String

Text

One to many (persona has multiple prompts, prompt has a single persona)

competitor_id

Number

Integer

Many to many

competitor_name

String

Text

Many to many

ai_platform

String

Enum

ChatGPT, Perplexity, Google AI Overviews, Meta, Claude

Many to many

tag

String

String

Many to many

branded

Boolean

Boolean

Whether the prompt includes the brand name (or an alternate name) or not.

One to many (prompt is branded or unbranded)

stage

String

Enum

Advice, Awareness, Evaluation, Comparison, Other

One to many (prompt has a single stage)

prompt_topic

String

String

Key Topic

Many to many

country

String

String

2-letter ISO country code

One to many (prompt has a single country, either persona or brand default)

Metrics

Name

Data Type

Semantic Type

Aggregation Type

Constraints

Notes

responses

Number

Integer

Count

brand_presence_percentage

Number

Percentage

Average

brand_position_score

Number

Float

Average

(0, 100)

brand_sentiment_score

Number

Float

Average

(0, 100)

competitor_presence_percentage

Number

Percentage

Average

Must be used with either or both the competitor_id or competitor_name dimensions.

competitor_position_score

Number

Float

Average

(0, 100)

Must be used with either or both the competitor_id or competitor_name dimensions.

competitor_sentiment_score

Number

Float

Average

(0, 100)

Must be used with either or both the competitor_id or competitor_name dimensions.

Configuration API

Operations

Endpoint

HTTP Method

Name

Notes

Status

Scope

/v1/brands

GET

List accessible brands

Only returns brands the API key has at least Query scope for

Live

Query

/v1/brands

POST

Create a brand

Accepts Brand Context object, returns brand ID.

Live

Brand Creation

/v1/brands/{brand_id}

GET

Get brand context

Name, alternative names, website, alternative websites, competitors, personas

Live

Query

/v1/brands/{brand_id}

PUT

Update brand context

Configure

/v1/brands/{brand_id}

DELETE

Deactivates a brand

Live

Brand Creation

/v1/{brand_id}/prompts

GET

List configured prompts

Live

Query

/v1/{brand_id}/prompts

POST

Add prompt(s)

Live

Configure

/v1/{brand_id}/prompts/{prompt_id}

GET

Get a specific prompt configuration

Live

Query

/v1/{brand_id}/prompts/{prompt_id}

DELETE

Deactivate a prompt.

Live

Configure

/v1/{brand_id}/prompts/{prompt_id}

PUT

Update a prompt

Note: only supports updating tags and platforms. To revise text, DELETE existing prompt and add a new one.

Configure

Input Formats

Prompt

Key

Data Type

Required

Example

text

String

Y

What are the best running shoes

tags

String[]

N

["cohort-a", "api"]

platforms

Enum[]

Y

["chatgpt", "perplexity"]

persona_id

Number

N

245

Brand Context

Key

Data Type

Required

Example

name

String

Y

Spirit Airlines

alternative_names

String[]

N

["Spirit"]

website

String

Y

alternative_websites

String[]

N

competitors

Competitor[]

N

See below

personas

Persona[]

N

See below

key_topics

String[]

N

["Air Travel", "Loyalty Programs", "Discount Fares"]

Persona

Key

Data Type

Required

Example

name

String

Y

Budget Traveler

description

String

Y

Enjoys travel but has limited financial means. They care most about being able to visit new places and enjoy new experiences and are willing to make trade-offs to travel more often.

Competitor

Key

Data Type

Required

Example

name

String

Y

Southwest Airlines

alternative_names

String[]

N

["Southwest"]

websites

String[]

N

Did this answer your question?