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/meResponse:
{
"request_status": "SUCCESS",
"request_id": "...",
"me": {
"id": "...",
"email": "user@example.com",
"display_name": "User Name"
}
}List My Organizations
GET /v1/me/organizationsResponse:
{
"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}/adaccountsList Organization Funding Sources
GET /v1/organizations/{organizationId}/fundingsourcesList Organization Members
GET /v1/organizations/{organizationId}/membersList Organization Roles
GET /v1/organizations/{organizationId}/rolesList Product Catalogs
GET /v1/organizations/{organizationId}/catalogsGet 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}/rolesList Campaigns
GET /v1/adaccounts/{adAccountId}/campaigns
GET /v1/adaccounts/{adAccountId}/campaigns?limit=50Query 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}/adsquadsGet 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}/adsGet 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-descGet 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-descGet Media
GET /v1/media/{mediaId}List Pixels
GET /v1/adaccounts/{adAccountId}/pixelsGet Pixel
GET /v1/pixels/{pixelId}List Segments
GET /v1/adaccounts/{adAccountId}/segmentsGet 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-14Query Parameters:
granularity-HOUR,DAY,LIFETIMEstart_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-14Get Countries
GET /v1/targeting/geo/countryGet Regions by Country
GET /v1/targeting/geo/{countryCode}/regionExample: GET /v1/targeting/geo/us/region
Get OS Types
GET /v1/targeting/device/os_typeGet Location Categories
GET /v1/targeting/location/categories_loiList Sponsored Content
GET /v1/ads_library/sponsored_contentResponse:
{
"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 forcountries(required) - Array of lowercase 2-letter ISO country codes (e.g.,["fr", "de", "gb"])start_date- ISO 8601 timestamp for date range startend_date- ISO 8601 timestamp for date range endstatus- 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"
}
}
]
}