OpenAPI
OpenAPI overview
Control plane and adserver share one contract: api/openapi.yaml in the Meridian Ads GitLab repo. Humans use Logto JWT. SDKs authenticate to serve with HMAC.
Hosts
| Role | Production | Local |
|---|---|---|
| Control plane | https://api.meridianads.tech | http://localhost:8080 |
| Adserver | https://serve.meridianads.tech | http://localhost:8090 |
| Console and docs | https://meridianads.tech | Nuxt dev server |
Production only. There is no staging hostname. Local compose is the development environment. The OpenAPI file is api/openapi.yaml in the Meridian Ads GitLab repo.
Serve
adserverDecision, events, and clicks live on the adserver, not the control plane. Live serve uses Redis plus this request only. No SQL and no xAI on the hot path.
| Method | Path | Auth | Notes |
|---|---|---|---|
| POST | /v1/decision | HMAC | 200 fill (paid or house), 204 no fill, 429 over 100 decisions/s per app_key |
| POST | /v1/events | HMAC | Fire on render with the impression token. Not IAB viewability. 204 recorded. |
| GET | /v1/click/{token} | Token | 302 to landing. 400 if the token is invalid, expired, or unbound to an impression. |