You’re viewing the v2 beta documentation. The API is in active development - breaking changes may occur before final release. For production use, switch to v1 using the version selector above.
Buyer API Reference
Overview
The Scope3 Buyer API v2 provides enhanced capabilities for brand advertisers to manage advertising campaigns through both REST and MCP (Model Context Protocol) interfaces.
The v2 API follows the SESOFI (Single Entity, Single Operation, Full Information) design principle:
Single Entity - Each endpoint manages one resource type
Single Operation - One call does one thing completely
Full Information - GET returns everything, PUT/POST accepts everything
Connection Methods
REST API (Recommended for traditional integrations) Standard HTTP methods with JSON request/response bodies. Production: https://api.agentic.scope3.com/api/v2/buyer
Staging: https://api-staging.agentic.scope3.com/api/v2/buyer
Example: curl https://api.agentic.scope3.com/api/v2/buyer/advertisers \
-H "Authorization: Bearer scope3_your_api_key_here"
MCP (Model Context Protocol) for AI Agents JSON-RPC 2.0 over HTTP POST with session management. Production: https://api.agentic.scope3.com/mcp/v2/buyer
Staging: https://api-staging.agentic.scope3.com/mcp/v2/buyer
Example: curl -X POST https://api.agentic.scope3.com/mcp/v2/buyer \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-H "mcp-session-id: your-uuid" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
OpenAPI Specification
Download the OpenAPI specification for SDK generation or API exploration:
Authentication
All API requests require authentication using your Scope3 API key:
Authorization: Bearer scope3_your_api_key_here
Get API Key Request API credentials to get started
REST API Endpoints
Advertisers
Core advertiser management endpoints. Following SESOFI, GET returns full advertiser data including all nested configuration.
Method Endpoint Description GET /api/v2/buyer/advertisersList all advertisers POST /api/v2/buyer/advertisersCreate a new advertiser GET /api/v2/buyer/advertisers/:idGet advertiser with full configuration PUT /api/v2/buyer/advertisers/:idUpdate advertiser (partial or full)
Example - Get Advertiser (returns EVERYTHING):
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123 \
-H "Authorization: Bearer scope3_your_api_key_here"
Response includes:
Advertiser details (name, industry, etc.)
All conversion events
All test cohorts
Measurement configuration
Brand associations
Conversion Events
Manage conversion events for measuring campaign effectiveness.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/conversion-eventsList all conversion events POST /api/v2/buyer/advertisers/:advertiserId/conversion-eventsCreate a conversion event GET /api/v2/buyer/advertisers/:advertiserId/conversion-events/:idGet a specific conversion event PUT /api/v2/buyer/advertisers/:advertiserId/conversion-events/:idUpdate a conversion event DELETE /api/v2/buyer/advertisers/:advertiserId/conversion-events/:idDelete a conversion event
Example - Create Conversion Event:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/conversion-events \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Purchase Complete",
"eventType": "purchase",
"value": 50.00,
"currency": "USD"
}'
Example - List Conversion Events:
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/conversion-events \
-H "Authorization: Bearer scope3_your_api_key_here"
Test Cohorts
Manage test cohorts for A/B testing and incrementality measurement.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/test-cohortsList all test cohorts POST /api/v2/buyer/advertisers/:advertiserId/test-cohortsCreate a test cohort GET /api/v2/buyer/advertisers/:advertiserId/test-cohorts/:idGet a specific test cohort PUT /api/v2/buyer/advertisers/:advertiserId/test-cohorts/:idUpdate a test cohort DELETE /api/v2/buyer/advertisers/:advertiserId/test-cohorts/:idDelete a test cohort
Example - Create Test Cohort:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/test-cohorts \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 Holdout Test",
"type": "holdout",
"percentage": 10,
"startDate": "2024-01-01",
"endDate": "2024-03-31"
}'
Example - List Test Cohorts:
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/test-cohorts \
-H "Authorization: Bearer scope3_your_api_key_here"
Measurement Config
Configure measurement settings for an advertiser. This is a singleton resource per advertiser.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/measurement-configGet measurement configuration PUT /api/v2/buyer/advertisers/:advertiserId/measurement-configUpdate measurement configuration
Example - Get Measurement Config:
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/measurement-config \
-H "Authorization: Bearer scope3_your_api_key_here"
Example - Update Measurement Config:
curl -X PUT https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/measurement-config \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"attributionWindow": 30,
"attributionModel": "lastTouch",
"measurementEnabled": true,
"crossDeviceTracking": true
}'
Brands
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/brandGet brand for advertiser POST /api/v2/buyer/advertisers/:advertiserId/brandCreate brand for advertiser PUT /api/v2/buyer/advertisers/:advertiserId/brandUpdate brand
Campaigns
Method Endpoint Description GET /api/v2/buyer/campaignsList all campaigns POST /api/v2/buyer/campaignsCreate a new campaign GET /api/v2/buyer/campaigns/:idGet campaign details PUT /api/v2/buyer/campaigns/:idUpdate campaign POST /api/v2/buyer/campaigns/:id/executeExecute/launch campaign POST /api/v2/buyer/campaigns/:id/pausePause campaign
Creative Sets
Manage creative sets containing assets (video, image, text) that can be combined into different creative formats with macro expansion support.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/creative-setsList all creative sets POST /api/v2/buyer/advertisers/:advertiserId/creative-setsCreate a creative set GET /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idGet a specific creative set PUT /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idUpdate a creative set DELETE /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idDelete a creative set POST /api/v2/buyer/advertisers/:advertiserId/creative-sets/:id/assetsAdd an asset to a creative set DELETE /api/v2/buyer/advertisers/:advertiserId/creative-sets/:id/assets/:assetIdRemove an asset from a creative set
Asset Types:
video - Video files with duration, dimensions, codec metadata
image - Image files with dimensions and alt text
text - Text content for headlines, descriptions, CTAs
Creative Formats:
display_banner - Standard display banners
native - Native ad formats
video_instream - In-stream video ads
video_outstream - Out-stream video ads
audio - Audio ads
ctv - Connected TV ads
dooh - Digital out-of-home ads
Example - Create Creative Set:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/creative-sets \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer 2025 Campaign Creatives",
"description": "Creative assets for summer promotional campaign",
"assets": [
{
"type": "video",
"name": "Hero Video 30s",
"url": "https://storage.example.com/videos/hero-30s.mp4",
"metadata": {
"duration": 30,
"width": 1920,
"height": 1080
}
},
{
"type": "text",
"name": "Primary Headline",
"content": "Discover Amazing Savings Today!"
}
],
"tags": ["summer", "promotional", "2025"]
}'
Example - Add Asset to Creative Set:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/creative-sets/cs_abc123/assets \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"type": "image",
"name": "Banner 300x250",
"url": "https://storage.example.com/images/banner-300x250.png",
"metadata": {
"width": 300,
"height": 250,
"altText": "Summer sale banner"
}
}'
View media buy execution status and delivery metrics.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/media-buysList all media buys GET /api/v2/buyer/advertisers/:advertiserId/media-buys/:idGet a specific media buy
Media Buy Statuses:
DRAFT - Initial state, not yet submitted
PENDING_APPROVAL - Submitted, awaiting approval
INPUT_REQUIRED - Additional information needed
ACTIVE - Currently running
PAUSED - Temporarily paused
COMPLETED - Successfully finished
FAILED - Execution failed
REJECTED - Not approved
ARCHIVED - Archived/deleted
Example - List Media Buys:
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/media-buys \
-H "Authorization: Bearer scope3_your_api_key_here"
Response:
{
"mediaBuys" : [
{
"id" : "mb_123" ,
"name" : "Summer CTV Campaign" ,
"status" : "ACTIVE" ,
"tacticId" : 456 ,
"tacticName" : "Premium CTV Inventory" ,
"packages" : [
{
"packageId" : "pkg_789" ,
"status" : "active" ,
"productIds" : [ "prod_123" , "prod_456" ],
"budget" : 25000 ,
"budgetCurrency" : "USD" ,
"delivery" : {
"impressions" : 150000 ,
"spend" : 12500.50 ,
"clicks" : 450 ,
"pacingIndex" : 1.02
}
}
],
"performance" : {
"impressions" : 150000 ,
"spend" : 12500.50 ,
"clicks" : 450
},
"createdAt" : "2025-01-15T10:30:00Z" ,
"updatedAt" : "2025-01-20T14:45:00Z"
}
],
"total" : 1
}
Reporting
Access reporting metrics and performance data for campaigns and media buys.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/reportingGet reporting
Query Parameters:
days - Number of days to include (default: 7, max: 90)
startDate - Start date in ISO format (YYYY-MM-DD)
endDate - End date in ISO format (YYYY-MM-DD)
campaignId - Filter by campaign ID
mediaBuyId - Filter by media buy ID
Example - Get Reporting:
curl "https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/reporting?days=7" \
-H "Authorization: Bearer scope3_your_api_key_here"
Response:
{
"dailyMetrics" : [
{
"date" : "2025-01-15" ,
"impressions" : 150000 ,
"spend" : 1250.50 ,
"clicks" : 450
},
{
"date" : "2025-01-16" ,
"impressions" : 175000 ,
"spend" : 1450.75 ,
"clicks" : 520
}
],
"totals" : {
"impressions" : 325000 ,
"spend" : 2701.25 ,
"clicks" : 970
},
"periodStart" : "2025-01-15" ,
"periodEnd" : "2025-01-21"
}
Creative Sets
Manage creative sets containing assets (video, image, text) that can be combined into different creative formats with macro expansion support.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/creative-setsList all creative sets POST /api/v2/buyer/advertisers/:advertiserId/creative-setsCreate a creative set GET /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idGet a specific creative set PUT /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idUpdate a creative set DELETE /api/v2/buyer/advertisers/:advertiserId/creative-sets/:idDelete a creative set POST /api/v2/buyer/advertisers/:advertiserId/creative-sets/:id/assetsAdd an asset to a creative set DELETE /api/v2/buyer/advertisers/:advertiserId/creative-sets/:id/assets/:assetIdRemove an asset from a creative set
Asset Types:
video - Video files with duration, dimensions, codec metadata
image - Image files with dimensions and alt text
text - Text content for headlines, descriptions, CTAs
Creative Formats:
display_banner - Standard display banners
native - Native ad formats
video_instream - In-stream video ads
video_outstream - Out-stream video ads
audio - Audio ads
ctv - Connected TV ads
dooh - Digital out-of-home ads
Example - Create Creative Set:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/creative-sets \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer 2025 Campaign Creatives",
"description": "Creative assets for summer promotional campaign",
"assets": [
{
"type": "video",
"name": "Hero Video 30s",
"url": "https://storage.example.com/videos/hero-30s.mp4",
"metadata": {
"duration": 30,
"width": 1920,
"height": 1080
}
},
{
"type": "text",
"name": "Primary Headline",
"content": "Discover Amazing Savings Today!"
}
],
"tags": ["summer", "promotional", "2025"]
}'
Example - Add Asset to Creative Set:
curl -X POST https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/creative-sets/cs_abc123/assets \
-H "Authorization: Bearer scope3_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"type": "image",
"name": "Banner 300x250",
"url": "https://storage.example.com/images/banner-300x250.png",
"metadata": {
"width": 300,
"height": 250,
"altText": "Summer sale banner"
}
}'
View media buy execution status and delivery metrics.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/media-buysList all media buys GET /api/v2/buyer/advertisers/:advertiserId/media-buys/:idGet a specific media buy
Media Buy Statuses:
DRAFT - Initial state, not yet submitted
PENDING_APPROVAL - Submitted, awaiting approval
INPUT_REQUIRED - Additional information needed
ACTIVE - Currently running
PAUSED - Temporarily paused
COMPLETED - Successfully finished
FAILED - Execution failed
REJECTED - Not approved
ARCHIVED - Archived/deleted
Example - List Media Buys:
curl https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/media-buys \
-H "Authorization: Bearer scope3_your_api_key_here"
Response:
{
"mediaBuys" : [
{
"id" : "mb_123" ,
"name" : "Summer CTV Campaign" ,
"status" : "ACTIVE" ,
"tacticId" : 456 ,
"tacticName" : "Premium CTV Inventory" ,
"packages" : [
{
"packageId" : "pkg_789" ,
"status" : "active" ,
"productIds" : [ "prod_123" , "prod_456" ],
"budget" : 25000 ,
"budgetCurrency" : "USD" ,
"delivery" : {
"impressions" : 150000 ,
"spend" : 12500.50 ,
"clicks" : 450 ,
"pacingIndex" : 1.02
}
}
],
"performance" : {
"impressions" : 150000 ,
"spend" : 12500.50 ,
"clicks" : 450
},
"createdAt" : "2025-01-15T10:30:00Z" ,
"updatedAt" : "2025-01-20T14:45:00Z"
}
],
"total" : 1
}
Reporting
Access reporting metrics and performance data for campaigns and media buys.
Method Endpoint Description GET /api/v2/buyer/advertisers/:advertiserId/reportingGet reporting
Query Parameters:
days - Number of days to include (default: 7, max: 90)
startDate - Start date in ISO format (YYYY-MM-DD)
endDate - End date in ISO format (YYYY-MM-DD)
campaignId - Filter by campaign ID
mediaBuyId - Filter by media buy ID
Example - Get Reporting:
curl "https://api.agentic.scope3.com/api/v2/buyer/advertisers/adv_123/reporting?days=7" \
-H "Authorization: Bearer scope3_your_api_key_here"
Response:
{
"dailyMetrics" : [
{
"date" : "2025-01-15" ,
"impressions" : 150000 ,
"spend" : 1250.50 ,
"clicks" : 450
},
{
"date" : "2025-01-16" ,
"impressions" : 175000 ,
"spend" : 1450.75 ,
"clicks" : 520
}
],
"totals" : {
"impressions" : 325000 ,
"spend" : 2701.25 ,
"clicks" : 970
},
"periodStart" : "2025-01-15" ,
"periodEnd" : "2025-01-21"
}
For AI agents using the Model Context Protocol, the v2 API provides streamlined tools following SESOFI principles.
Tool Description create_advertiserCreate a new advertiser with full initial configuration get_advertiserGet advertiser with ALL nested data (conversion events, test cohorts, measurement config) update_advertiserUpdate ANY advertiser field in a single call list_advertisersList all advertisers with pagination
SESOFI Design: get_advertiser returns EVERYTHING - no need for separate calls to get conversion events, test cohorts, or measurement config. Similarly, update_advertiser can set ANY field in one operation.
MCP Example - Get Full Advertiser:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "get_advertiser" ,
"arguments" : {
"advertiserId" : "adv_123"
}
}
}
Response includes everything:
{
"data" : {
"id" : "adv_123" ,
"name" : "Acme Corp" ,
"industry" : "retail" ,
"conversionEvents" : [ ... ],
"testCohorts" : [ ... ],
"measurementConfig" : { ... },
"brands" : [ ... ]
}
}
Tool Description create_brandCreate a new brand for an advertiser update_brandUpdate brand configuration list_brandsList all brands
Tool Description start_product_discoveryStart a product discovery session browse_publisher_productsBrowse products from publishers refine_discovery_searchRefine discovery search criteria compare_discovery_publishersCompare publishers side-by-side update_discovery_session_productsUpdate selected products in session get_discovery_recommendationsGet AI-powered recommendations get_discovery_plan_analysisGet analysis of discovery plan complete_discovery_sessionComplete and finalize discovery session
Tool Description create_discovery_campaignCreate a Product Discovery campaign to find and select ad products from publishers update_discovery_campaignUpdate a Product Discovery campaign (status, dates, budget, products)
Tool Description create_audience_campaignCreate an Audience campaign targeting a specific signal/audience segment update_audience_campaignUpdate an Audience campaign (status, dates, budget, signal targeting) list_signalsList available audience signals for targeting
Tool Description create_performance_campaignCreate a Performance campaign optimized for ROAS, CONVERSIONS, LEADS, or SALES update_performance_campaignUpdate a Performance campaign (status, objective, target value, bid strategy)
Tool Description create_creative_setCreate a new creative set with optional initial assets get_creative_setGet creative set with all assets and creatives list_creative_setsList all creative sets for an advertiser update_creative_setUpdate creative set name, description, status, or tags delete_creative_setDelete a creative set add_asset_to_creative_setAdd a video, image, or text asset to a creative set remove_asset_from_creative_setRemove an asset from a creative set
MCP Example - Create Creative Set:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "create_creative_set" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"name" : "Summer 2025 Campaign Creatives" ,
"description" : "Video and display assets for summer campaign" ,
"assets" : [
{
"type" : "video" ,
"name" : "Hero Video 30s" ,
"url" : "https://storage.example.com/videos/hero-30s.mp4" ,
"metadata" : {
"duration" : 30 ,
"width" : 1920 ,
"height" : 1080
}
}
],
"tags" : [ "summer" , "2025" ]
}
}
}
MCP Example - Add Asset:
{
"jsonrpc" : "2.0" ,
"id" : 2 ,
"method" : "tools/call" ,
"params" : {
"name" : "add_asset_to_creative_set" ,
"arguments" : {
"creativeSetId" : "cs_abc123" ,
"type" : "image" ,
"name" : "Display Banner 300x250" ,
"url" : "https://storage.example.com/images/banner.png" ,
"metadata" : {
"width" : 300 ,
"height" : 250
}
}
}
}
Tool Description list_media_buysList all media buys for an advertiser with delivery metrics get_media_buyGet detailed media buy information including packages and performance
MCP Example - List Media Buys:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "list_media_buys" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"includeArchived" : false
}
}
}
Tool Description get_reportingGet impressions, spend, and clicks reporting metrics
MCP Example - Get Reporting:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "get_reporting" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"days" : 7 ,
"campaignId" : "cmp_123"
}
}
}
Response includes:
Daily breakdown of impressions, spend, and clicks
Aggregated totals for the period
Period start and end dates
Tool Description create_creative_setCreate a new creative set with optional initial assets get_creative_setGet creative set with all assets and creatives list_creative_setsList all creative sets for an advertiser update_creative_setUpdate creative set name, description, status, or tags delete_creative_setDelete a creative set add_asset_to_creative_setAdd a video, image, or text asset to a creative set remove_asset_from_creative_setRemove an asset from a creative set
MCP Example - Create Creative Set:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "create_creative_set" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"name" : "Summer 2025 Campaign Creatives" ,
"description" : "Video and display assets for summer campaign" ,
"assets" : [
{
"type" : "video" ,
"name" : "Hero Video 30s" ,
"url" : "https://storage.example.com/videos/hero-30s.mp4" ,
"metadata" : {
"duration" : 30 ,
"width" : 1920 ,
"height" : 1080
}
}
],
"tags" : [ "summer" , "2025" ]
}
}
}
MCP Example - Add Asset:
{
"jsonrpc" : "2.0" ,
"id" : 2 ,
"method" : "tools/call" ,
"params" : {
"name" : "add_asset_to_creative_set" ,
"arguments" : {
"creativeSetId" : "cs_abc123" ,
"type" : "image" ,
"name" : "Display Banner 300x250" ,
"url" : "https://storage.example.com/images/banner.png" ,
"metadata" : {
"width" : 300 ,
"height" : 250
}
}
}
}
Tool Description list_media_buysList all media buys for an advertiser with delivery metrics get_media_buyGet detailed media buy information including packages and performance
MCP Example - List Media Buys:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "list_media_buys" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"includeArchived" : false
}
}
}
Tool Description get_reportingGet impressions, spend, and clicks reporting metrics
MCP Example - Get Reporting:
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"method" : "tools/call" ,
"params" : {
"name" : "get_reporting" ,
"arguments" : {
"advertiser" : "Acme Corp" ,
"days" : 7 ,
"campaignId" : "cmp_123"
}
}
}
Response includes:
Daily breakdown of impressions, spend, and clicks
Aggregated totals for the period
Period start and end dates
All responses follow a consistent structure:
{
"data" : { ... },
"error" : null ,
"meta" : {
"requestId" : "req_abc123" ,
"timestamp" : "2024-01-15T10:30:00Z"
}
}
Error Response:
{
"data" : null ,
"error" : {
"code" : "NOT_FOUND" ,
"message" : "Advertiser not found"
},
"meta" : {
"requestId" : "req_abc123" ,
"timestamp" : "2024-01-15T10:30:00Z"
}
}
Support
For technical support, contact us at support@scope3.com .