Scope3 Creatives API

Build, manage, and sync campaign creatives via AdCP Creative Protocol

Operations 39

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /advertisers/{advertiserId}/creative/model-credentials List generation-provider keys for an advertiser · List generation-provider keys for an advertiser #
Ask an LLM
“Which of my own AI generation keys can be used for a given advertiser?”
“Which generation key is auto-selected when creatives are generated?”
Tell an agent
List the generation-provider keys available to advertiser {advertiser_id}.
Show which model key is effective for advertiser {advertiser_id}.
POST /advertisers/{advertiserId}/creative/model-credentials Connect my own generation-provider key · Connect a generation-provider key for an advertiser #
Ask an LLM
“Can creative generation run on my own model provider account?”
“Is the raw API key I connect for creative generation ever stored in plain text?”
Tell an agent
Connect my {provider_type} key {api_key} labelled {label} to advertiser {advertiser_id}.
Store generation key {api_key} for provider {provider_type} on advertiser {advertiser_id} as {label}.
PATCH /creative/model-credentials/{id} Rotate or edit a generation-provider key · Update or rotate a generation-provider key #
Ask an LLM
“How do I rotate a generation key without losing its label and assignments?”
“Can I make one generation key the default across advertisers?”
Tell an agent
Rotate generation credential {id} to new key {api_key}.
Assign generation credential {id} to advertisers {advertiser_ids}.
GET /creative-dashboard-url Get a link to the creative dashboard · Get creative dashboard URL #
Ask an LLM
“Can I get a direct link into the creative dashboard for a campaign?”
“How do I deep-link someone to one specific creative in the dashboard?”
Tell an agent
Get the creative dashboard link for advertiser {advertiser_id}, campaign {campaign_id}.
Give me a dashboard URL that opens creative {manifest_id} in campaign {campaign_id} for advertiser {advertiser_id}.
POST /campaigns/{campaignId}/creatives/create Create a creative in a campaign · Create creative manifest #
Ask an LLM
“How do I upload a new creative with its files to a campaign?”
“Can I attach a brief message and a format when creating a campaign creative?”
Tell an agent
Create creative {name} in campaign {campaign_id} with assets {assets}.
Add a {format_id} creative to campaign {campaign_id} with message {message}.
GET /campaigns/{campaignId}/creatives/templates List creative templates and required formats · List creative templates #
Ask an LLM
“What creative templates and formats do my campaign's products require?”
“Which ad sizes do I need to supply for a campaign?”
Tell an agent
List creative templates for campaign {campaign_id}.
Show the required formats for campaign {campaign_id}.
GET /campaigns/{campaignId}/creativeManifest Filter a campaign's creatives by role, source or format · List creative manifests #
Ask an LLM
“Can I filter a campaign's creatives by format kind, asset type or dimensions?”
“Which of a campaign's creatives are promoted or AI-generated?”
Tell an agent
List creative manifests in campaign {campaign_id} with format kind {format_kind}.
Show {dimensions} creatives from source {source} in campaign {campaign_id}.
GET /campaigns/{campaignId}/creatives List a campaign's creatives · List creatives #
Ask an LLM
“What creatives are in my campaign right now?”
“Can I search a campaign's creatives by name?”
Tell an agent
List creatives in campaign {campaign_id}.
Search campaign {campaign_id}'s creatives for {search}.
POST /campaigns/{campaignId}/creatives/bulk-update Bulk update a campaign's saved creatives · Bulk update creatives #
Ask an LLM
“Can I change many campaign creatives at once?”
“Can I preview which creatives a bulk change would touch before applying it?”
Tell an agent
Preview applying {update} to creatives matching {selection} in campaign {campaign_id}.
Apply {update} to creatives matching {selection} in campaign {campaign_id} with dry run {dry_run}.
POST /advertisers/{advertiserId}/creatives/create Create a creative master for an advertiser · Create advertiser creative master #
Ask an LLM
“Can I create a creative for an advertiser before picking a campaign?”
“How do I make one creative I can reuse across several campaigns?”
Tell an agent
Create advertiser-level creative {name} for advertiser {advertiser_id}.
Add a reusable creative master to advertiser {advertiser_id} with assets {assets}.
GET /advertisers/{advertiserId}/creatives List an advertiser's creative library · List advertiser creative library #
Ask an LLM
“What creatives does an advertiser have across all its campaigns?”
“Can I filter an advertiser's library by role, such as evergreen or reference?”
Tell an agent
List the creative library for advertiser {advertiser_id}.
Show {role} creatives in advertiser {advertiser_id}'s library.
POST /advertisers/{advertiserId}/creatives/save-to-library Promote creatives into the advertiser library shelf · Promote advertiser creatives into the library shelf #
Ask an LLM
“How do I save creatives as evergreen so they can be reused in other campaigns?”
“Can I keep creatives only as references for generation rather than serving them?”
Tell an agent
Save creatives {creative_ids} to advertiser {advertiser_id}'s library as {role}.
Promote every creative in collection {collection_id} to the {role} shelf for advertiser {advertiser_id}.
POST /creatives/stash Stash uploaded creatives before choosing an advertiser · Stash brought creatives before an advertiser is chosen #
Ask an LLM
“Can I upload creatives before I've said which advertiser they belong to?”
“Will my uploads survive until I name the advertiser later?”
Tell an agent
Stash these uploaded creatives {assets} until I pick an advertiser.
Hold uploads {assets} at the customer level for now.
POST /advertisers/{advertiserId}/creative-intent Ask which campaign uploaded creatives are for · Open the creative-intent picker for an advertiser #
Ask an LLM
“After uploading creatives, how do I get asked which campaign they belong to?”
“Can I see an advertiser's recent campaigns when deciding where creatives go?”
Tell an agent
Open the campaign picker for these uploads {assets} under advertiser {advertiser_id}.
Ask which campaign stashed creatives {creative_ids} are for, for advertiser {advertiser_id}.
GET /campaigns/{campaignId}/creative-confirmation View the creatives added to a campaign and format coverage · Get creative-confirmation card for a campaign #
Ask an LLM
“Which required placements are covered by the creatives on my campaign?”
“Can I review what creatives were added to a campaign without attaching more?”
Tell an agent
Show the creative confirmation card for campaign {campaign_id}.
Check format coverage of campaign {campaign_id}'s creatives.
POST /campaigns/{campaignId}/creative-confirmation Attach brought creatives to a campaign · Attach brought creatives to a campaign #
Ask an LLM
“How do I add the creatives I just uploaded to my campaign?”
“Do attached images get matched to placements by size automatically?”
Tell an agent
Attach uploads {assets} to campaign {campaign_id}.
Attach saved creatives {creative_ids} to campaign {campaign_id}.
POST /campaigns/{campaignId}/creatives/{creativeId}/placement Move one creative to a different placement · Reassign a brought creative to a different placement #
Ask an LLM
“A creative landed in the wrong slot — can I move it to the leaderboard?”
“How do I correct the placement of a single attached creative?”
Tell an agent
Move creative {creative_id} in campaign {campaign_id} to placement {format_id}.
Reassign creative {creative_id} to format {format_id} on campaign {campaign_id}.
POST /campaigns/{campaignId}/creatives/placements Reassign several creatives to placements at once · Batch-reassign brought creatives to placements #
Ask an LLM
“Can I save placement mappings for many creatives in one go?”
“How do I commit a batch of creative-to-placement corrections?”
Tell an agent
Save placement mappings {mappings} for campaign {campaign_id}.
Batch-reassign creatives in campaign {campaign_id} using mappings {mappings}.
POST /advertisers/{advertiserId}/creatives/{creativeId}/campaigns Assign a library creative to a campaign · Assign creative to campaign #
Ask an LLM
“How do I reuse a creative from an advertiser's library in another campaign?”
“Can one library creative run in more than one campaign?”
Tell an agent
Assign library creative {creative_id} from advertiser {advertiser_id} to campaign {campaign_id}.
Add advertiser {advertiser_id}'s creative {creative_id} to campaign {campaign_id}.
DELETE /advertisers/{advertiserId}/creatives/{creativeId}/campaigns/{campaignId} Unassign a library creative from a campaign · Unassign creative from campaign #
Ask an LLM
“Can I take a library creative out of one campaign but keep it in the library?”
“How do I stop a creative running in a specific campaign?”
Tell an agent destructive · confirm first
Unassign creative {creative_id} of advertiser {advertiser_id} from campaign {campaign_id}.
Remove library creative {creative_id} from campaign {campaign_id} for advertiser {advertiser_id}.
DELETE /advertisers/{advertiserId}/creatives/{creativeId} Archive a creative across all campaigns · Archive creative globally #
Ask an LLM
“How do I retire a creative everywhere it's used?”
“Will archiving a creative be blocked if it is in an active media buy?”
Tell an agent destructive · confirm first
Archive creative {creative_id} for advertiser {advertiser_id} across all campaigns.
Permanently retire advertiser {advertiser_id}'s creative {creative_id} everywhere.
GET /campaigns/{campaignId}/creative-collections List a campaign's creative collections · List creative collections #
Ask an LLM
“Which creative collections are attached to my campaign?”
“Can I include each collection's members when listing a campaign's collections?”
Tell an agent
List creative collections for campaign {campaign_id}.
Search campaign {campaign_id}'s collections for {search}.
POST /campaigns/{campaignId}/creative-collections Create a creative collection for a campaign · Create creative collection #
Ask an LLM
“How do I group a campaign's creatives and assets into a collection?”
“Can I attach a new collection to the campaign as I create it?”
Tell an agent
Create collection {name} in campaign {campaign_id}.
Create campaign collection {name} for campaign {campaign_id} with members {members}.
GET /campaigns/{campaignId}/creative-collections/{collectionId} View one creative collection · Get creative collection #
Ask an LLM
“What creatives and assets are inside a particular collection?”
“Which campaigns is a given collection attached to?”
Tell an agent
Show collection {collection_id} in campaign {campaign_id}.
Get the members of collection {collection_id} (campaign {campaign_id}).
PUT /campaigns/{campaignId}/creative-collections/{collectionId} Rename or describe a creative collection · Update creative collection #
Ask an LLM
“Can I rename a creative collection?”
“How do I change a collection's description or metadata?”
Tell an agent
Rename collection {collection_id} in campaign {campaign_id} to {name}.
Set the description of collection {collection_id} (campaign {campaign_id}) to {description}.
POST /campaigns/{campaignId}/creative-collections/{collectionId}/members Add creatives or assets to a collection · Add creative collection members #
Ask an LLM
“How do I add more creatives or generated assets to an existing collection?”
“Can raw assets go into a creative collection, not just saved creatives?”
Tell an agent
Add members {members} to collection {collection_id} in campaign {campaign_id}.
Put creatives {members} into collection {collection_id} for campaign {campaign_id}.
DELETE /campaigns/{campaignId}/creative-collections/{collectionId}/members Remove creatives or assets from a collection · Remove creative collection members #
Ask an LLM
“Can I take a creative out of a collection without deleting the creative?”
“How do I drop assets from a creative collection?”
Tell an agent destructive · confirm first
Remove members {members} from collection {collection_id} in campaign {campaign_id}.
Take {members} out of collection {collection_id} (campaign {campaign_id}).
POST /campaigns/{campaignId}/creative-collections/{collectionId}/attach Attach a creative collection to a campaign · Attach creative collection to campaign #
Ask an LLM
“Can I use a collection as a campaign's approved set or testing set?”
“How do I attach an existing collection to a campaign?”
Tell an agent
Attach collection {collection_id} to campaign {campaign_id}.
Attach collection {collection_id} to campaign {campaign_id} as the {role} set.
GET /advertisers/{advertiserId}/creative-collections List an advertiser's creative collections · List advertiser creative collections #
Ask an LLM
“Which creative collections does an advertiser own outside any one campaign?”
“Can I search an advertiser's collections by name?”
Tell an agent
List creative collections owned by advertiser {advertiser_id}.
Search advertiser {advertiser_id}'s collections for {search}.
POST /advertisers/{advertiserId}/creative-collections Create an advertiser-owned creative collection · Create advertiser creative collection #
Ask an LLM
“Can I create a collection that isn't tied to a single campaign?”
“How do I build a collection I can attach to several campaigns?”
Tell an agent
Create advertiser collection {name} for advertiser {advertiser_id}.
Make a reusable collection {name} under advertiser {advertiser_id} with members {members}.
GET /campaigns/{campaignId}/creatives/{creativeId} View one creative in a campaign · Get creative manifest #
Ask an LLM
“What assets and settings does a specific creative in my campaign have?”
“Can I fetch a single campaign creative by its id?”
Tell an agent
Show creative {creative_id} in campaign {campaign_id}.
Get the assets of campaign {campaign_id}'s creative {creative_id}.
PUT /campaigns/{campaignId}/creatives/{creativeId} Edit a campaign creative and its assets · Update creative manifest #
Ask an LLM
“Can I change a creative's click-through URL?”
“How do I swap or delete assets on an existing creative?”
Tell an agent
Set the click URL of creative {creative_id} in campaign {campaign_id} to {click_url}.
Delete assets {asset_ids} from creative {creative_id} in campaign {campaign_id}.
DELETE /campaigns/{campaignId}/creatives/{creativeId} Delete a creative from a campaign · Delete creative manifest #
Ask an LLM
“How do I delete a creative and its files from one campaign?”
“Does deleting a campaign creative remove its assets too?”
Tell an agent destructive · confirm first
Delete creative {creative_id} from campaign {campaign_id}.
Remove creative manifest {creative_id} and its assets from campaign {campaign_id}.
POST /campaigns/{campaignId}/creatives/{creativeId}/preview Render a preview of a creative · Preview creative #
Ask an LLM
“Can I see what a creative will look like before it runs?”
“Why does previewing a creative fail with a validation error?”
Tell an agent
Preview creative {creative_id} in campaign {campaign_id}.
Render campaign {campaign_id}'s creative {creative_id} through its format renderer.
POST /campaigns/{campaignId}/creatives/{creativeId}/duplicate Duplicate a creative within its campaign · Duplicate creative #
Ask an LLM
“Can I copy an existing creative to make a variation?”
“Does duplicating a creative copy its assets too?”
Tell an agent
Duplicate creative {creative_id} in campaign {campaign_id}.
Make a copy of campaign {campaign_id}'s creative {creative_id}.
GET /campaigns/{campaignId}/creative-sessions/{sessionId} View a creative iteration session · Get creative session #
Ask an LLM
“What drafts and evaluator results are in my creative iteration session?”
“Where does a creative generation session stand right now?”
Tell an agent
Show creative session {session_id} in campaign {campaign_id}.
Get the drafts and status of session {session_id} (campaign {campaign_id}).
POST /campaigns/{campaignId}/creative-sessions/{sessionId}/evaluate Run evaluator checks on a creative session · Evaluate creative session #
Ask an LLM
“Can I run quality checks on the drafts in a creative session?”
“Is there a separate final evaluation stage for a chosen variant?”
Tell an agent
Evaluate creative session {session_id} in campaign {campaign_id}.
Run {stage} checks on variant {variant_id} of session {session_id} in campaign {campaign_id}.
POST /campaigns/{campaignId}/creative-sessions/{sessionId}/finalize Save a session variant as a campaign creative · Finalize creative session #
Ask an LLM
“How do I turn the variant I like from a creative session into a real creative?”
“Can I name the creative when I finalize a session?”
Tell an agent
Finalize session {session_id} in campaign {campaign_id} with variant {variant_id}.
Save the chosen variant of session {session_id} as creative {name} in campaign {campaign_id}.
GET /campaigns/{campaignId}/creative-references Get reference material for generating creatives · Get creative references #
Ask an LLM
“What reference assets and past creatives can be used to generate new ones for a campaign?”
“Which sourced materials are available as generation inputs?”
Tell an agent
Get creative references for campaign {campaign_id}.
Show the reference assets and past creatives I can generate from for campaign {campaign_id}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scope3:scope3-creatives-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scope3-creatives-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Scope3 Buyer Creatives API
  version: 2.0.0
  description: 'REST API for advertisers to manage advertisers, campaigns, and reporting.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.interchange.io/api/v2/buyer`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/buyer` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features'
servers:
- url: https://api.interchange.io/api/v2/buyer
  description: Production server
tags:


# --- truncated at 32 KB (376 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scope3/refs/heads/main/openapi/scope3-creatives-api-openapi.yml