DSP API
Programmatic buying for DOOH inventory. Discover screens, upload creatives, and serve ads β all via REST. Real-time audience signals no other SSP can match.
Quick Start
From zero to serving ads on screens in 7 API calls.
curl -X POST https://api.trillboards.com/openrtb/v2/onboard \
-H "Content-Type: application/json" \
-d '{
"company_name": "Acme Advertising",
"seat_id": "acme_ads",
"contact_email": "buyer@acme-ads.com"
}'
# Response includes your API key (shown once):
# { "data": { "api_key": { "key": "tb_dsp_a1b2c3..." } } }curl https://api.trillboards.com/openrtb/v2/adslots?country=US&venue_type=retail \
-H "x-api-key: tb_dsp_YOUR_KEY"
# Each screen includes live FEIN signals:
# ext.trb.fein.live_face_count, attention_score, dominant_emotion, vas_7dcurl -X POST https://api.trillboards.com/openrtb/v2/creatives \
-H "x-api-key: tb_dsp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Sale 15s",
"content_type": "video/mp4",
"creative_url": "https://cdn.example.com/ads/summer-sale.mp4"
}'
# AI moderation runs automatically (~30 seconds)
# Poll GET /openrtb/v2/creatives/:id for status# Create campaign
curl -X POST https://api.trillboards.com/openrtb/v2/campaigns \
-H "x-api-key: tb_dsp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"creative_id": "CREATIVE_ID",
"name": "Summer Retail Push",
"targeting": { "country": "US", "venue_type": "retail" }
}'
# Assign to specific screens
curl -X POST https://api.trillboards.com/openrtb/v2/campaigns/assign \
-H "x-api-key: tb_dsp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"creative_id": "CREATIVE_ID",
"screen_ids": ["SCREEN_1", "SCREEN_2", "SCREEN_3"]
}'
# Screens pick up the creative within 30-60 secondsWhy Trillboards
Real-time audience signals
FEIN edge AI provides live face count, emotion, attention, and purchase intent on every screen. No other SSP has this.
Cryptographic proof-of-play
Every impression is Ed25519-signed and third-party verifiable. No trust required.
AI-moderated creatives
Gemini AI automatically classifies content (IAB categories, age rating, brand safety) in ~30 seconds.
Full reporting pipeline
Per-screen breakdown, time-series trends, fill rate, and CPM analytics via API.
Authentication
All endpoints except /onboard require an API key. Include it as a header:
# Option 1: x-api-key header
curl -H "x-api-key: tb_dsp_YOUR_KEY" ...
# Option 2: Bearer token
curl -H "Authorization: Bearer tb_dsp_YOUR_KEY" ...New DSPs start in sandbox mode (100 req/min). Sandbox bids are validated but don't enter the live auction. Contact support@trillboards.com to upgrade to production (1,000 req/min).
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /openrtb/v2/onboard | Self-register, get API key |
| GET | /openrtb/v2/adslots | Browse screens + FEIN signals |
| POST | /openrtb/v2/forecast | Estimate delivery for budget |
| POST | /openrtb/v2/discover | Semantic inventory search |
| POST | /openrtb/v2/bid | Submit OpenRTB 2.6 bids |
| POST | /openrtb/v2/creatives | Upload creative (URL or S3) |
| GET | /openrtb/v2/creatives/:id | Moderation status + IAB codes |
| POST | /openrtb/v2/campaigns | Create campaign |
| POST | /openrtb/v2/campaigns/assign | Place on screens |
| GET | /openrtb/v2/deals | Browse PMP deals |
| GET | /openrtb/v2/reports/summary | Performance summary |
| GET | /openrtb/v2/reports/timeseries | Hourly/daily trends |
FEIN Audience Signals
Trillboards screens run edge AI (FEIN) that provides real-time audience data no other SSP can match. These signals are included in the /adslots response under ext.trb.fein.
| Signal | Type | Freshness |
|---|---|---|
| live_face_count | integer | 10 seconds |
| attention_score | 0-1 | 10 seconds |
| dominant_emotion | string | 10 seconds |
| vas_7d | number | Hourly |
| crowd_density | integer | 10 seconds |
| purchase_intent | string | 30 seconds |
| income_level | enum | 10 seconds |
| ad_receptivity | 0-1 | 10 seconds |
Rate Limits
| Group | Sandbox | Production |
|---|---|---|
| Bidding | 100/min | 1,000/min |
| Inventory | 100/min | 200/min |
| Campaigns | 100/min | 100/min |
| Onboarding | 5/hr | 5/hr |
Rate limit headers are included in every response: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset.
Need help integrating? Contact developers@trillboards.com