Skip to main content
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

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"

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.
MethodEndpointDescription
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.
MethodEndpointDescription
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.
MethodEndpointDescription
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.
MethodEndpointDescription
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

MethodEndpointDescription
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

MethodEndpointDescription
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.
MethodEndpointDescription
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"
    }
  }'

Media Buys

View media buy execution status and delivery metrics.
MethodEndpointDescription
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.
MethodEndpointDescription
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.
MethodEndpointDescription
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"
    }
  }'

Media Buys

View media buy execution status and delivery metrics.
MethodEndpointDescription
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.
MethodEndpointDescription
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"
}

MCP Tools

For AI agents using the Model Context Protocol, the v2 API provides streamlined tools following SESOFI principles.

Advertiser Tools

ToolDescription
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": [...]
  }
}

Brand Tools

ToolDescription
create_brandCreate a new brand for an advertiser
update_brandUpdate brand configuration
list_brandsList all brands

Product Discovery Session Tools

ToolDescription
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

Campaign Tools - Product Discovery

ToolDescription
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)

Campaign Tools - Audience

ToolDescription
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

Campaign Tools - Performance

ToolDescription
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)

Creative Set Tools

ToolDescription
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
      }
    }
  }
}

Media Buy Tools

ToolDescription
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
    }
  }
}

Reporting Tools

ToolDescription
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

Creative Set Tools

ToolDescription
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
      }
    }
  }
}

Media Buy Tools

ToolDescription
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
    }
  }
}

Reporting Tools

ToolDescription
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

Response Format

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.