Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: CartViral Pitches API
version: 1.0.0
description: 'AI product videos for e-commerce: import products, generate TikTok, Reels and Shorts clips, get download links, and work with the CartViral Earn creator marketplace. Same operations as the MCP server at https://app.cartviral.com/mcp. Docs: https://cartviral.com/api'
contact:
name: CartViral
email: support@cartviral.com
url: https://cartviral.com
servers:
- url: https://app.cartviral.com/api/v1
security:
- bearer: []
- oauth:
- mcp
tags:
- name: Pitches
paths:
/pitches:
post:
operationId: createPitch
summary: 'Pitch a brand: 3 AI clips and a page to send'
description: 'Paste a brand''s store or product link: CartViral imports it, makes 3 AI clips of its best product (18 credits) and returns a public page to send the brand, with a "Launch your offer" button that carries this account''s referral code (30% of what the brand pays CartViral, for life). Max 10 a day. Offers track sales in Shopify, so pitch Shopify brands.'
x-openai-isConsequential: true
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
additionalProperties: true
'400':
description: Invalid input or the action could not be done; body has an error message
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid credentials
'429':
description: 'Rate limit: 120 calls per minute per key'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: The brand's store or product page URL
required:
- url
tags:
- Pitches
get:
operationId: listPitches
summary: Your pitches and who opened them
description: 'Pitches made with bring_a_brand: page link, render progress, how many times the brand opened it and clicked "Launch your offer".'
x-openai-isConsequential: false
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
additionalProperties: true
'400':
description: Invalid input or the action could not be done; body has an error message
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid credentials
'429':
description: 'Rate limit: 120 calls per minute per key'
tags:
- Pitches
components:
schemas:
Error:
type: object
properties:
error:
type: string
required:
- error
securitySchemes:
bearer:
type: http
scheme: bearer
description: API key from Account → AI agents (cv_live_...), or an OAuth access token
oauth:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://app.cartviral.com/oauth/authorize
tokenUrl: https://app.cartviral.com/oauth/token
refreshUrl: https://app.cartviral.com/oauth/token
scopes:
mcp: Use your CartViral account