API reference

circle-info

Available on Business and above.

Use the Cuppa API to generate content and images using AI. The capabilities of the API are defined in the next sections.

Get all metadata

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

Metadata object

application/json
get
/v1/meta
200

Metadata object

Get available models

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of model names

application/json
Responsestring[]
get
/v1/meta/models
200

A list of model names

Get available image models

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of image model names

application/json
Responsestring[]
get
/v1/meta/image_models
200

A list of image model names

Get available languages

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of supported languages

application/json
get
/v1/meta/languages
200

A list of supported languages

Get available regions

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of supported regions

application/json
get
/v1/meta/regions
200

A list of supported regions

Fetch list of generated images

get
Authorizations
X-API-KEYstringRequired
Query parameters
limitinteger · max: 50Optional

Maximum number of images to return (max 50, default 20)

Responses
chevron-right
200

A list of generated images

application/json
get
/v1/images
200

A list of generated images

Create an image

post
Authorizations
X-API-KEYstringRequired
Body
modelstringRequired

The model to use for image generation. Use the /v1/meta/image_models endpoint to get available image models.

promptstring · max: 1000Required

The prompt to use for image generation

Responses
chevron-right
200

Successfully generated image

application/json
post
/v1/images
200

Successfully generated image

Fetch list of articles

get
Authorizations
X-API-KEYstringRequired
Query parameters
pageinteger · nullableOptional

Page number for pagination

langstring · nullableOptional

Filter by language code

projectstring · nullableOptional

Filter by project ID. If not provided, it will return the articles not part of any project. Use all to get all articles.

sitestring · uuid · nullableOptional

Filter by site/brand ID. Use GET /v1/sites to get available site IDs.

Responses
chevron-right
200

A list of articles

application/json
get
/v1/contents
200

A list of articles

Create a new article

post

Create content using different templates:

  • article (default): Full-featured articles with support for listicles, reviews, how-tos. Use settings.article_type to specify.

  • local_news: Location-focused news articles. Simpler settings, uses local_news_settings.

  • recipe: Structured recipe content with ingredients, instructions. Uses recipe_settings.

Authorizations
X-API-KEYstringRequired
Body
target_keywordstringRequired

The target keyword for the content.

templatestring · enumOptional

The content template to use:

  • article: General articles with full settings (listicle, review, howto, general)
  • local_news: Location-focused news content
  • recipe: Structured recipe with ingredients and instructions
Default: articlePossible values:
site_idstring · uuid · nullableOptional

Optional site/brand ID. Enables Brand Voice, site context, and Link Engine.

modelstringOptional

The AI model to use.

Default: gpt-4o-mini
settings_presetnumber · nullableOptional

Preset ID (only for template=article).

is_draftbooleanOptional

Whether to save as draft (won't generate immediately)

Default: false
Responses
chevron-right
200

Content created successfully

application/json
post
/v1/contents
200

Content created successfully

Get an article by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the article

Responses
chevron-right
200

The article object

application/json
get
/v1/contents/{id}
200

The article object

Get the current status of an article

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the article

Responses
chevron-right
200

The status of the article

application/json
get
/v1/contents/{id}/status
200

The status of the article

Get content grade for an article

get

Returns the content grade and SERP optimization scores for an article. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The article ID

Responses
chevron-right
200

Article grade

application/json
get
/v1/contents/{id}/grade
200

Article grade

Trigger grading for an article

post

Analyzes the article and generates a content grade. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The article ID

Responses
chevron-right
200

Article graded successfully

application/json
post
/v1/contents/{id}/grade
200

Article graded successfully

Get SERP analysis data for an article

get

Returns competitor analysis data including top-ranking pages, word counts, and search intent. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The article ID

Responses
chevron-right
200

SERP analysis data

application/json
get
/v1/contents/{id}/serp
200

SERP analysis data

Fetch SERP data for an article

post

Triggers competitor analysis by scraping top 10 search results for the article's keyword. Data is cached for 3 days. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The article ID

Body
locationstringOptional

Country/region code (e.g. "us", "uk"). Required if not set on article.

Responses
chevron-right
200

SERP fetch started

application/json
post
/v1/contents/{id}/serp
200

SERP fetch started

Get AI optimization suggestions

post

Generates actionable suggestions to improve content based on SERP competitor analysis. Requires SERP data to be fetched first (POST /v1/contents/{id}/serp). Uses Anthropic API key if available for AI-powered suggestions, otherwise returns quick suggestions. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The article ID

Body
use_aibooleanOptional

Use AI for suggestions (requires Anthropic API key)

Default: true
Responses
chevron-right
200

Optimization suggestions

application/json
post
/v1/contents/{id}/optimize
200

Optimization suggestions

Fetch list of projects

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of projects

application/json
get
/v1/projects
200

A list of projects

Create a new project

post
Authorizations
X-API-KEYstringRequired
Body
project_namestring · max: 100Required

Name of the project

site_idstring · uuid · nullableOptional

Optional site/brand ID. When provided, enables Brand Voice, site context, target audience, and Link Engine for all articles in the project. Use GET /v1/sites to list available sites.

modelstringOptional

The model to use for the article. Use the /v1/meta/models endpoint to get available models.

Default: gpt-4o-mini
common_settings_presetnumber · nullableOptional

The settings preset to use for the project. Use the common_settings object to override specific settings. Go to your presets to create a preset.

target_keywordsstring[] · min: 1 · max: 600Required

The target keywords to generate content for.

Responses
chevron-right
200

Project created successfully

application/json
post
/v1/projects
200

Project created successfully

Get a project by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the project

Responses
chevron-right
200

The project object

application/json
get
/v1/projects/{id}
200

The project object

Export project articles

get

Export all completed articles from a project in JSON or CSV format. This endpoint is useful for bulk exporting content to external systems like Airtable, spreadsheets, or custom CMS integrations.

Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the project to export

Query parameters
formatstring · enumOptional

The export format. Use csv for spreadsheet-compatible output.

Default: jsonPossible values:
fieldsstringOptional

Comma-separated list of fields to include in the export. Available fields: title, slug, content, excerpt, date, image, target_keyword, keywords, language, model, pov, tone. Default: title,slug,content,excerpt,image,target_keyword,language,model

session_idstring · nullableOptional

Filter articles by bulk session ID (optional)

statusstring · enumOptional

Filter by article status. Use complete to only export finished articles, or all to include in-progress articles.

Default: completePossible values:
Responses
chevron-right
200

Exported articles

get
/v1/projects/{id}/export

List all sites/brands

get

Returns a list of all sites (brands) for your team. Use site IDs when creating content to enable Brand DNA features.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional

Page number for pagination

Responses
chevron-right
200

A list of sites

application/json
get
/v1/sites
200

A list of sites

Get a site by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The site ID

Responses
chevron-right
200

The site object

application/json
get
/v1/sites/{id}
200

The site object

Get all brand information for a site

get

Returns brand context, voices, and visual style in a single request.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The site ID

Responses
chevron-right
200

Brand information

application/json
get
/v1/sites/{id}/brand
200

Brand information

List all presets

get

Returns a list of AI instruction presets that can be used when creating content.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional

Page number for pagination

Responses
chevron-right
200

A list of presets

application/json
get
/v1/presets
200

A list of presets

Create a new preset

post
Authorizations
X-API-KEYstringRequired
Body
namestring · max: 100Required
descriptionstring · max: 500Optional
presetsobjectOptional
Responses
post
/v1/presets
201

Preset created

Get a preset by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idintegerRequired

The preset ID

Responses
chevron-right
200

The preset with full settings

application/json
get
/v1/presets/{id}
200

The preset with full settings

Update a preset

put
Authorizations
X-API-KEYstringRequired
Path parameters
idintegerRequired

The preset ID

Body
namestring · max: 100Required
descriptionstring · max: 500Optional
presetsobjectOptional
Responses
chevron-right
200

Preset updated

application/json
put
/v1/presets/{id}
200

Preset updated

List knowledge sources

get

Returns a list of knowledge sources (RAG documents). Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional

Page number for pagination

Responses
chevron-right
200

A list of knowledge sources

application/json
get
/v1/knowledge
200

A list of knowledge sources

Delete a preset

delete
Authorizations
X-API-KEYstringRequired
Path parameters
idintegerRequired

The preset ID

Responses
delete
/v1/presets/{id}
204

Preset deleted

No content

Create a text knowledge source

post

Create a knowledge source from text content. For file uploads, use POST /v1/knowledge/upload.

Authorizations
X-API-KEYstringRequired
Body
namestring · max: 200Required
descriptionstring · max: 500Optional
contentstring · max: 100000Required

The text content to index

Responses
post
/v1/knowledge
201

Knowledge source created

Request upload URL for file-based knowledge

post

Get a signed URL to upload a PDF or TXT file. After uploading, call POST /v1/knowledge/{id}/confirm to trigger processing. Maximum file size: 50MB.

Authorizations
X-API-KEYstringRequired
Body
namestring · max: 200Required
descriptionstring · max: 500Optional
filenamestringRequired
content_typestring · enumRequiredPossible values:
Responses
post
/v1/knowledge/upload
201

Upload URL generated

List keyword clusters

get

Returns keyword clusters for content planning. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional
sitestring · uuidOptional

Filter by site ID

in_planbooleanOptional

Filter by active clusters

Responses
chevron-right
200

A list of clusters

application/json
get
/v1/clusters
200

A list of clusters

Get a cluster with keywords

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The cluster ID

Responses
chevron-right
200

Cluster with keywords

application/json
get
/v1/clusters/{id}
200

Cluster with keywords

Activate a cluster

post

Mark a cluster as "In Plan" for content planning. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The cluster ID

Responses
chevron-right
200

Cluster activated

application/json
post
/v1/clusters/{id}/activate
200

Cluster activated

Deactivate a cluster

post

Remove a cluster from "In Plan". Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The cluster ID

Responses
chevron-right
200

Cluster deactivated

application/json
post
/v1/clusters/{id}/deactivate
200

Cluster deactivated

List content planner items

get

Returns scheduled content items. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional
sitestring · uuidOptional
statusstring · enumOptionalPossible values:
from_datestring · dateOptional

Filter items scheduled on or after this date

to_datestring · dateOptional

Filter items scheduled on or before this date

Responses
chevron-right
200

A list of planner items

application/json
get
/v1/planner
200

A list of planner items

Create a planner item

post

Schedule a keyword for content creation. Each keyword can only be scheduled once.

Authorizations
X-API-KEYstringRequired
Body
site_idstring · uuidRequired
keyword_idstring · uuidRequired

The keyword to schedule (must exist in site_keywords)

cluster_idstring · uuidRequired

The cluster this keyword belongs to

datestring · dateRequired

Scheduled date for content creation

statusstring · enumOptionalDefault: scheduledPossible values:
Responses
post
/v1/planner

Get a planner item

get

Get a single planner item by keyword_id. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The keyword_id of the planner item

Responses
chevron-right
200

The planner item

application/json
get
/v1/planner/{id}

Update a planner item

put

Update the scheduled date or status of a planner item. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The keyword_id of the planner item

Body
datestring · dateOptional

New scheduled date

statusstring · enumOptional

New status

Possible values:
Responses
chevron-right
200

Planner item updated

application/json
put
/v1/planner/{id}

Delete a planner item

delete

Remove a scheduled item from the content planner. Cannot delete created/published items. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Path parameters
idstring · uuidRequired

The keyword_id of the planner item

Responses
chevron-right
200

Planner item deleted

application/json
delete
/v1/planner/{id}

Generate a social media post

post

Generate a social media post from article content. Requires Power plan or higher. Uses your OpenAI API key for text generation, and optionally Replicate API key for image generation.

Authorizations
X-API-KEYstringRequired
Body
site_idstring · uuidRequired
article_idstring · uuid · nullableOptional
article_titlestringRequired
article_summarystringRequired
article_urlstring · uri · nullableOptional
platformstring · enumRequiredPossible values:
tonestring · enumOptionalDefault: engagingPossible values:
include_hashtagsbooleanOptionalDefault: true
max_hashtagsinteger · max: 30Optional
hook_typestring · enumOptionalPossible values:
generate_imagebooleanOptionalDefault: false
Responses
post
/v1/social
201

Social post generated

Get supported social platforms

get

Returns all supported social platforms with their character limits and best practices.

Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

List of platforms

application/json
get
/v1/social/platforms
200

List of platforms

get

Returns sites with Link Engine configuration. Requires Power plan or higher.

Authorizations
X-API-KEYstringRequired
Query parameters
pageintegerOptional
searchstringOptional

Search by domain

categorystring · uuidOptional
statusstring · enumOptionalPossible values:
Responses
chevron-right
200

List of Link Engine sites

application/json
get
/v1/links
200

List of Link Engine sites

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

Link Engine stats

application/json
get
/v1/links/stats
200

Link Engine stats

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

List of categories

application/json
get
/v1/links/categories
200

List of categories

Create a link category

post
Authorizations
X-API-KEYstringRequired
Body
namestring · max: 50Required
descriptionstring · max: 200Optional
colorstringOptionalDefault: #6366f1Pattern: ^#[0-9A-Fa-f]{6}$
Responses
post
/v1/links/categories
201

Category created

Authentication

To use the API, you need to authenticate using an API key. Go to your Cuppa settingsarrow-up-right to obtain an API key. Include the API key in the X-API-KEY header of your requests as follows:

Rate Limiting

The API has rate limits in place to ensure fair usage.

Error Handling

The API returns standard HTTP status codes to indicate the success or failure of a request. In case of an error, the response will contain an error object with details about the error.

Get all metadata

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

Metadata object

application/json
get
/v1/meta
200

Metadata object

Get available models

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of model names

application/json
Responsestring[]
get
/v1/meta/models
200

A list of model names

Get available image models

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of image model names

application/json
Responsestring[]
get
/v1/meta/image_models
200

A list of image model names

Get available languages

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of supported languages

application/json
get
/v1/meta/languages
200

A list of supported languages

Get available regions

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of supported regions

application/json
get
/v1/meta/regions
200

A list of supported regions

Fetch list of generated images

get
Authorizations
X-API-KEYstringRequired
Query parameters
limitinteger · max: 50Optional

Maximum number of images to return (max 50, default 20)

Responses
chevron-right
200

A list of generated images

application/json
get
/v1/images
200

A list of generated images

Create an image

post
Authorizations
X-API-KEYstringRequired
Body
modelstringRequired

The model to use for image generation. Use the /v1/meta/image_models endpoint to get available image models.

promptstring · max: 1000Required

The prompt to use for image generation

Responses
chevron-right
200

Successfully generated image

application/json
post
/v1/images
200

Successfully generated image

Fetch list of articles

get
Authorizations
X-API-KEYstringRequired
Query parameters
pageinteger · nullableOptional

Page number for pagination

langstring · nullableOptional

Filter by language code

projectstring · nullableOptional

Filter by project ID. If not provided, it will return the articles not part of any project. Use all to get all articles.

sitestring · uuid · nullableOptional

Filter by site/brand ID. Use GET /v1/sites to get available site IDs.

Responses
chevron-right
200

A list of articles

application/json
get
/v1/contents
200

A list of articles

Create a new article

post

Create content using different templates:

  • article (default): Full-featured articles with support for listicles, reviews, how-tos. Use settings.article_type to specify.

  • local_news: Location-focused news articles. Simpler settings, uses local_news_settings.

  • recipe: Structured recipe content with ingredients, instructions. Uses recipe_settings.

Authorizations
X-API-KEYstringRequired
Body
target_keywordstringRequired

The target keyword for the content.

templatestring · enumOptional

The content template to use:

  • article: General articles with full settings (listicle, review, howto, general)
  • local_news: Location-focused news content
  • recipe: Structured recipe with ingredients and instructions
Default: articlePossible values:
site_idstring · uuid · nullableOptional

Optional site/brand ID. Enables Brand Voice, site context, and Link Engine.

modelstringOptional

The AI model to use.

Default: gpt-4o-mini
settings_presetnumber · nullableOptional

Preset ID (only for template=article).

is_draftbooleanOptional

Whether to save as draft (won't generate immediately)

Default: false
Responses
chevron-right
200

Content created successfully

application/json
post
/v1/contents
200

Content created successfully

Get an article by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the article

Responses
chevron-right
200

The article object

application/json
get
/v1/contents/{id}
200

The article object

Get the current status of an article

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the article

Responses
chevron-right
200

The status of the article

application/json
get
/v1/contents/{id}/status
200

The status of the article

Fetch list of projects

get
Authorizations
X-API-KEYstringRequired
Responses
chevron-right
200

A list of projects

application/json
get
/v1/projects
200

A list of projects

Create a new project

post
Authorizations
X-API-KEYstringRequired
Body
project_namestring · max: 100Required

Name of the project

site_idstring · uuid · nullableOptional

Optional site/brand ID. When provided, enables Brand Voice, site context, target audience, and Link Engine for all articles in the project. Use GET /v1/sites to list available sites.

modelstringOptional

The model to use for the article. Use the /v1/meta/models endpoint to get available models.

Default: gpt-4o-mini
common_settings_presetnumber · nullableOptional

The settings preset to use for the project. Use the common_settings object to override specific settings. Go to your presets to create a preset.

target_keywordsstring[] · min: 1 · max: 600Required

The target keywords to generate content for.

Responses
chevron-right
200

Project created successfully

application/json
post
/v1/projects
200

Project created successfully

Get a project by ID

get
Authorizations
X-API-KEYstringRequired
Path parameters
idstringRequired

The ID of the project

Responses
chevron-right
200

The project object

application/json
get
/v1/projects/{id}
200

The project object

Last updated

Was this helpful?