# REST API: forecast, launch and report DOOH campaigns

> Plan, launch and report on VERSE campaigns from your own tools: endpoints for forecasts, campaigns, results, creatives and screens, in curl, JS and Python.

Source: https://verse.ad/docs/rest-api

Docs

Build on VERSE.

Pair screens, plan and buy campaigns from your own tools, track what happens after a scan, and bid through your DSP.

[Venues Pair a screen Six digits or a QR scan.](http://127.0.0.1:3399/docs/pair-a-screen#reference)[Brands Plan by API Forecast, launch and report from your tools.](http://127.0.0.1:3399/docs/rest-api#reference)[Agents Connect the MCP server Plan and operate with an AI agent.](http://127.0.0.1:3399/docs/mcp-server#reference)[Partners Bid through your DSP OpenRTB 2.6, PMP and PG.](http://127.0.0.1:3399/docs/openrtb#reference)

Ads Manager

## REST API

Plan, launch and report on campaigns from your own tools. The API uses the same permissions as the person who created the key, and every call is written to the journal with source API.

EndpointWhat it does

POST /v1/forecastsScreens, plays and impressions for a plan, before you pay

POST /v1/campaignsCreate a campaign from a forecast, as a draft or for review

GET /v1/campaigns/{id}Status, budget, pacing and flight

GET /v1/campaigns/{id}/resultsImpressions, plays, scans and spend by day, hour and screen

POST /v1/creativesUpload a still or a video of up to 20 seconds and run the spec checks

GET /v1/screensScreens in an area, with venue type and opening hours

```
curl https://api.hub.verse.ad/v1/forecasts \
  -H "Authorization: Bearer $VERSE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "areas": [{ "lat": 53.7997, "lng": -1.5492, "radiusKm": 3 }],
    "venueTypes": ["cafes", "gyms", "coworking"],
    "hours": { "days": ["mon","tue","wed","thu","fri"], "from": "07:00", "to": "19:00" },
    "budget": 300,
    "currency": "USD"
  }'
```

Examples are illustrative.

- Create keys in Ads Manager › Settings › API keys. Keys are scoped to one workspace.
- Rate limit: 600 requests a minute per key. Responses carry X-RateLimit-Remaining.
- Money is in minor units only where the field name ends in Minor; everywhere else it is a decimal in the campaign currency.

[← Previous: Pair a screen](http://127.0.0.1:3399/docs/pair-a-screen#reference)[Next: MCP server →](http://127.0.0.1:3399/docs/mcp-server#reference)
