Partner APIs
The same REST API the dashboard uses — channels, ad breaks, campaigns, orders, line items, creatives, deals, identity and reporting.
Authentication
Create a key at Dashboard → Settings → API Keys (name and optional expiry). The key is shown once. It acts exactly as your own login: same role, same account, same data scope. Keys are stored hashed and can be revoked from the same page.
Authorization: Bearer ltv_live_xxxxxxxxxxxx Base URL: https://api.ltvadx.com/api/v1/
Channels and ad breaks (publishers)
GET /api/v1/channels
POST /api/v1/channels
{
"name": "FAST News 24",
"platforms": ["ROKU", "FIRE_TV"],
"contentModel": "FAST",
"floorCpm": 5.00,
"country": "IN",
"language": "en"
}
GET /api/v1/channels/{id}
PUT /api/v1/channels/{id}
DELETE /api/v1/channels/{id}
PATCH /api/v1/channels/{id}/status # admin: approve / suspend
GET /api/v1/ad-breaks · POST · GET/PUT/DELETE /api/v1/ad-breaks/{id}Ad breaks are informational today
Ad-break records (pod size, break floor, skip settings) are stored but not used by the ad server. The decision uses the channel's floor CPM and the breakType and duration on each VAST request.
Campaigns, orders, line items, creatives (advertisers)
POST /api/v1/campaigns
{
"name": "Brand Awareness Q4",
"advertiserId": "…",
"totalBudget": 50000,
"dailyBudget": 2000,
"startDate": "2026-10-01",
"endDate": "2026-12-31",
"currency": "USD"
}
POST /api/v1/orders # a line item serves only under an APPROVED order
POST /api/v1/line-items
{
"campaignId": "…",
"orderId": "…",
"name": "Roku Q4 30s",
"dealType": "OPEN_AUCTION",
"bidCpm": 12.50,
"budget": 20000,
"dailyBudget": 800,
"platforms": ["ROKU", "FIRE_TV"],
"targetContentModels": ["FAST", "AVOD"],
"targetBreakTypes": ["MID_ROLL"],
"channelIds": ["…"],
"maxAdDurationSeconds": 30,
"frequencyCapImpressions": 3,
"frequencyCapWindowHours": 24,
"minVcrThreshold": 0.65
}
POST /api/v1/creatives
{
"name": "30s Brand Spot",
"creativeType": "VAST_WRAPPER",
"vastUrl": "https://cdn.example.com/vast/30s.xml",
"durationSeconds": 30,
"skippable": false
}
# Each resource also has GET (list / by id), PUT, PATCH /{id}/status and DELETE.Targeting fields that are saved but not applied
Regions, cities, DMA regions and TV-exposed (ACR) segments are stored on line items but not evaluated at serve time. Country targeting applies only to requests that carry a country.
Deals
POST /api/v1/deals
{
"name": "Q4 Sports PMP",
"dealType": "PMP",
"sellerPublisherId": "…",
"channelIds": ["…"],
"floorCpm": 18.00,
"startDate": "2026-10-01",
"endDate": "2026-12-31"
}
GET /api/v1/deals · GET/PUT /api/v1/deals/{id} · PATCH /api/v1/deals/{id}/status
GET /api/v1/ssp/inventory?platform=ROKU&country=IN # browse inventory
GET /api/v1/ssp/inventory/{channelId}/forecastIdentity and reporting
See the Identity API guide (/api/v1/identity/resolve, /acr-signal) and the Reporting Overview (/api/v1/reports/delivery, /vcr, /summary, /reach-frequency).
Not available yet
- Webhooks — poll the API instead.
- Publisher sub-account creation and invitations through the API.
- Role-limited or IP-restricted API keys — a key always carries its owner's full access.
List endpoints return all matching records for your scope; there is no cursor pagination.