6. Managing jobs
| Request | What it does |
|---|---|
POST https://mp.dvocorp.com/api/v1/jobs/upload |
submit with the file (the main one) — multipart |
POST https://mp.dvocorp.com/api/v1/jobs/api |
submit by URL — JSON, for files already in storage |
GET https://mp.dvocorp.com/api/v1/jobs/{job_id} |
status of one job |
GET https://mp.dvocorp.com/api/v1/jobs?limit=50&offset=0 |
your recent jobs — a JSON array, newest first |
POST https://mp.dvocorp.com/api/v1/jobs/{job_id}/repeat |
run it again, same params — billed as a fresh submit, returns a new job |
POST https://mp.dvocorp.com/api/v1/jobs/{job_id}/cancel |
cancel and refund |
All take X-Api-Key.
Listing bounds. GET /jobs takes limit (1..200, default 50) and
offset (≥ 0). A limit outside that range — including 0 or a negative — is a
422 with a pydantic detail array ("Input should be less than or equal to 200"
/ "…greater than or equal to 1"), not a clamp. The response is a bare JSON
array of job objects (same shape as GET /jobs/{id}), newest first.
Billing: the tariff base is debited at submit and automatically refunded if the job fails or is canceled. Every job is then charged for its processing time when it finishes — 1 more bonus per further started minute, capped at 30 per file — and a failed or canceled job is never charged for time. See The tariff: you pay for processing time in section 3.
Priority: "high_priority": true is honored only on premium plans; on other
plans it is silently ignored and the job runs at normal priority.