Maton

Snapchat

Access the Snapchat Marketing API with managed OAuth authentication. Manage organizations, ad accounts, campaigns, ad squads, ads, creatives, media, and audiences.

Reference

Get Current User

GET /v1/me

Response:

{
  "request_status": "SUCCESS",
  "request_id": "...",
  "me": {
    "id": "...",
    "email": "user@example.com",
    "display_name": "User Name"
  }
}

List My Organizations

GET /v1/me/organizations

Response:

{
  "request_status": "SUCCESS",
  "request_id": "...",
  "organizations": [
    {
      "sub_request_status": "SUCCESS",
      "organization": {
        "id": "63acee69-77ff-4378-8492-3f8d28e8f241",
        "name": "My Organization",
        "country": "US",
        "contact_name": "John Doe",
        "contact_email": "john@example.com"
      }
    }
  ]
}

Get Organization

GET /v1/organizations/{organizationId}

List Organization Ad Accounts

GET /v1/organizations/{organizationId}/adaccounts

List Organization Funding Sources

GET /v1/organizations/{organizationId}/fundingsources

List Organization Members

GET /v1/organizations/{organizationId}/members

List Organization Roles

GET /v1/organizations/{organizationId}/roles

List Product Catalogs

GET /v1/organizations/{organizationId}/catalogs

Get Ad Account

GET /v1/adaccounts/{adAccountId}

Response:

{
  "request_status": "SUCCESS",
  "request_id": "...",
  "adaccounts": [
    {
      "sub_request_status": "SUCCESS",
      "adaccount": {
        "id": "6e916ba9-db2f-40cd-9553-a90e32cedea3",
        "name": "My Ad Account",
        "type": "PARTNER",
        "status": "ACTIVE",
        "organization_id": "...",
        "currency": "USD",
        "timezone": "America/Los_Angeles"
      }
    }
  ]
}

List Ad Account Roles

GET /v1/adaccounts/{adAccountId}/roles

List Campaigns

GET /v1/adaccounts/{adAccountId}/campaigns
GET /v1/adaccounts/{adAccountId}/campaigns?limit=50

Query Parameters:

  • limit - Number of results (50-1000)

Get Campaign

GET /v1/campaigns/{campaignId}

Create Campaign

POST /v1/adaccounts/{adAccountId}/campaigns
Content-Type: application/json

{
  "campaigns": [{
    "name": "Campaign Name",
    "status": "PAUSED",
    "ad_account_id": "{adAccountId}",
    "start_time": "2026-02-15T00:00:00.000-08:00"
  }]
}

Update Campaign

PUT /v1/adaccounts/{adAccountId}/campaigns
Content-Type: application/json

{
  "campaigns": [{
    "id": "{campaignId}",
    "name": "Updated Campaign Name",
    "status": "ACTIVE"
  }]
}

Delete Campaign

DELETE /v1/campaigns/{campaignId}

List Ad Squads

GET /v1/adaccounts/{adAccountId}/adsquads
GET /v1/campaigns/{campaignId}/adsquads

Get Ad Squad

GET /v1/adsquads/{adSquadId}

Create Ad Squad

POST /v1/campaigns/{campaignId}/adsquads
Content-Type: application/json

{
  "adsquads": [{
    "name": "Ad Squad Name",
    "status": "PAUSED",
    "campaign_id": "{campaignId}",
    "type": "SNAP_ADS",
    "placement": "SNAP_ADS",
    "optimization_goal": "IMPRESSIONS",
    "bid_micro": 1000000,
    "daily_budget_micro": 50000000,
    "start_time": "2026-02-15T00:00:00.000-08:00",
    "targeting": {
      "geos": [{"country_code": "us"}]
    }
  }]
}

Update Ad Squad

PUT /v1/campaigns/{campaignId}/adsquads
Content-Type: application/json

{
  "adsquads": [{
    "id": "{adSquadId}",
    "name": "Updated Ad Squad Name"
  }]
}

Delete Ad Squad

DELETE /v1/adsquads/{adSquadId}

List Ads

GET /v1/adaccounts/{adAccountId}/ads
GET /v1/adsquads/{adSquadId}/ads

Get Ad

GET /v1/ads/{adId}

Create Ad

POST /v1/adsquads/{adSquadId}/ads
Content-Type: application/json

{
  "ads": [{
    "name": "Ad Name",
    "status": "PAUSED",
    "ad_squad_id": "{adSquadId}",
    "creative_id": "{creativeId}",
    "type": "SNAP_AD"
  }]
}

Update Ad

PUT /v1/adsquads/{adSquadId}/ads
Content-Type: application/json

{
  "ads": [{
    "id": "{adId}",
    "name": "Updated Ad Name"
  }]
}

Delete Ad

DELETE /v1/ads/{adId}

List Creatives

GET /v1/adaccounts/{adAccountId}/creatives
GET /v1/adaccounts/{adAccountId}/creatives?limit=50&sort=updated_at-desc

Get Creative

GET /v1/creatives/{creativeId}

Create Creative

POST /v1/adaccounts/{adAccountId}/creatives
Content-Type: application/json

{
  "creatives": [{
    "name": "Creative Name",
    "ad_account_id": "{adAccountId}",
    "type": "SNAP_AD",
    "top_snap_media_id": "{mediaId}",
    "headline": "Headline Text",
    "brand_name": "Brand Name",
    "call_to_action": "VIEW_MORE"
  }]
}

Update Creative

PUT /v1/adaccounts/{adAccountId}/creatives
Content-Type: application/json

{
  "creatives": [{
    "id": "{creativeId}",
    "name": "Updated Creative Name"
  }]
}

List Media

GET /v1/adaccounts/{adAccountId}/media
GET /v1/adaccounts/{adAccountId}/media?limit=50&sort=created_at-desc

Get Media

GET /v1/media/{mediaId}

List Pixels

GET /v1/adaccounts/{adAccountId}/pixels

Get Pixel

GET /v1/pixels/{pixelId}

List Segments

GET /v1/adaccounts/{adAccountId}/segments

Get Segment

GET /v1/segments/{segmentId}

Get Ad Account Stats

GET /v1/adaccounts/{adAccountId}/stats?granularity=DAY&start_time=2026-02-01&end_time=2026-02-14

Query Parameters:

  • granularity - HOUR, DAY, LIFETIME
  • start_time - Start date (YYYY-MM-DD)
  • end_time - End date (YYYY-MM-DD)

Get Campaign Stats

GET /v1/campaigns/{campaignId}/stats?granularity=DAY&start_time=2026-02-01&end_time=2026-02-14

Get Countries

GET /v1/targeting/geo/country

Get Regions by Country

GET /v1/targeting/geo/{countryCode}/region

Example: GET /v1/targeting/geo/us/region

Get OS Types

GET /v1/targeting/device/os_type

Get Location Categories

GET /v1/targeting/location/categories_loi

List Sponsored Content

GET /v1/ads_library/sponsored_content

Response:

{
  "request_status": "SUCCESS",
  "request_id": "...",
  "sponsored_content": [
    {
      "sub_request_status": "SUCCESS",
      "sponsored_content": {
        "id": "...",
        "name": "Content Name",
        "status": "ACTIVE"
      }
    }
  ]
}

Search Sponsored Content

POST /v1/ads_library/sponsored_content/search
Content-Type: application/json

{
  "limit": 50
}

Search Ads

Search for ads in the public Ads Library by advertiser name and country.

POST /v1/ads_library/ads/search
Content-Type: application/json

{
  "paying_advertiser_name": "Nike",
  "countries": ["fr", "de"],
  "limit": 50
}

Parameters:

  • paying_advertiser_name (required) - Advertiser name to search for
  • countries (required) - Array of lowercase 2-letter ISO country codes (e.g., ["fr", "de", "gb"])
  • start_date - ISO 8601 timestamp for date range start
  • end_date - ISO 8601 timestamp for date range end
  • status - Filter by status (e.g., "ACTIVE", "PAUSED")
  • limit - Number of results to return

Note: Not all countries are available in the Ads Library. EU countries (fr, de, gb, etc.) are supported. US ads may not be available due to regional restrictions.

Response:

{
  "request_status": "SUCCESS",
  "request_id": "...",
  "paging": {
    "next_link": "..."
  },
  "ad_previews": [
    {
      "sub_request_status": "SUCCESS",
      "ad_preview": {
        "id": "...",
        "name": "Ad Name",
        "ad_account_name": "Advertiser Name",
        "status": "ACTIVE",
        "creative_type": "WEB_VIEW",
        "headline": "Ad Headline",
        "call_to_action": "SHOP NOW"
      }
    }
  ]
}

Resources

On this page