---
title: "Create a job (generic)"
method: POST
path: "/jobs"
tags: ["Jobs"]
---

# Create a job (generic)

`POST /jobs`

Create a new media processing job. Specify the job type, input files, and processing parameters. Use GET /jobs/types to discover available types.

## Request body

- object
  - `type` string, required — Job type identifier (e.g., watermark.apply, transcode)
  - `inputs` object — Input files (e.g., { source: 'https://...' })
  - `params` object — Job-specific parameters (validated per job type)
  - `forceAsync` boolean — Force async dispatch even for sync-eligible job types
  - `idempotencyKey` string — Idempotency key to prevent duplicate job creation

## Response `200`

Job completed synchronously or duplicate (idempotent)

- object
  - `id` string, required — Job ID
  - `status` 'complete', required — Completed synchronously
  - `url` string — Data URL of the result

## Other responses

- `201` — Job created and dispatched successfully
- `400` — Validation error
- `401` — Unauthorized
- `402` — Insufficient credits
- `403` — Forbidden — job type not allowed on plan
- `429` — Rate limited

---

[API](https://skmtc.dev/rendobar/apis/rendobar-api.md) · [All operations](https://skmtc.dev/rendobar/apis/rendobar-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rendobar/rendobar-api/revisions/4a8c1482a33b/schema)
