POST
/v1/jobsCreate job
Use this as the main server-side entry point. Server-stored project configuration is loaded by client_id and merged with documented request-level overrides.
Auth: Secret key, or activation token for browser flows
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| client_id | string | Yes | Project identifier. |
| session_id | string | Yes | Stable publisher session identifier. |
| job_type | string | Yes | Workload category such as chat, search, agent, or summarization. |
| slots_requested | integer | No | Number of ad slots to request. Defaults to one. |
| consent | object | No | Consent state or consent reference for this request. |
Response fields
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | Yes | Created job identifier. |
| slot_ids | string[] | Yes | Slots to render or poll for decisions. |
| poll_path_template | string | Yes | Canonical decision polling path. |
| request_id | string | Yes | Support identifier. |
Examples
create-job.sh
curl -X POST https://api.wavebird.ai/v1/jobs \
-H "Authorization: Bearer sk_test_wavebird_demo_secret" \
-H "Content-Type: application/json" \
-d '{
"client_id": "wbproj_demo_8jK42",
"session_id": "sess_demo_123",
"job_type": "chat",
"slots_requested": 1,
"consent": {
"source": "publisher",
"purposes": {
"ads": true,
"measurement": true
}
}
}'Response example
{
"job_id": "job_demo_123",
"slot_ids": ["slot_demo_123"],
"poll_path_template": "/v1/decisions/{slot_id}",
"request_id": "req_JVd28x"
}Errors
unauthorized401Missing key or activation token.
forbidden403Wrong key type for the request.
rate_limited429Key exceeded its rate limit; retry after the Retry-After header.
validation_error400The request body failed validation.