# Wandura API v2

> **TL;DR** — Run a ready-made image or video **style** with one HTTPS call from your server, then poll for the result or receive a signed webhook. You never pick a model; you only pay for a run that delivered. Test keys (`wdr_test_…`) return a sample for $0. Base URL: `https://api.wandura.ai`.

This is the API for generating images and videos with Wandura styles. (Streaming licensed films to an app is a different API: see the [Delivery API](https://docs.wandura.ai/developers).)

## Pick your path
## Two ways to call the same engine
**Start with jobs.** New integrations use the [Jobs API](https://docs.wandura.ai/developers/api-v2/jobs): one door, one set of words for statuses and errors. Runs stay supported and run on the same engine; nothing you built on them changes.

|  | Jobs (recommended) | Runs |
|---|---|---|
| Submit | `POST /v2/jobs` | `POST /v2/styles/{style}` |
| Result | A **job**: `job_id`, `GET /v2/jobs/{job_id}`, signed `webhook_url` | A **run**: `status_url`, `cancel_url` |
| Statuses | `queued`, `processing`, `succeeded`, `failed`, `cancelled`, `timeout` | The same words in `state` (`status` keeps the older words) |
| Best for | Every new integration: apps, backends, workflow engines | Integrations already built on runs |
| Same underneath | Keys, wallet, prices, fallback, and no charge for a run that did not deliver |  |

**Rolling out:** the Relax lane (`lane`) and a style's own inputs (`inputs`) on `POST /v2/jobs`, so every style a key can run through runs also runs as a job (see [Jobs API](https://docs.wandura.ai/developers/api-v2/jobs#lane-and-inputs)).

## Reference
- **OpenAPI 3.1** for the whole API: [api.wandura.ai/v2/openapi.json](https://api.wandura.ai/v2/openapi.json) (no key needed).
- **One style's inputs**: `GET /v2/public/styles/{style}/openapi.json`.
- **MCP server** for agents that act at run time: `https://api.wandura.ai/mcp` (same Bearer key).
- Status and maintenance: [wandura.instatus.com](https://wandura.instatus.com).
