v2 Jobs

Streamed upload with a ticket (paid UI upload)

EP-048. Authenticated ONLY by a one-time Upload-Ticket header obtained from POST /api/v2/jobs/upload-ticket (no per-body ES256 signature, which is why this lane can STREAM, unlike v1 /jobs). Enforced at the ticket's per-tier byte cap; creates an owner_type=account_device job for the ticket's account. Single-use: the ticket is consumed on arrival.

post/api/v2/jobs/upload

Request

  • Base URL: https://pdf2md.dev
  • URL: https://pdf2md.dev/api/v2/jobs/upload
  • Auth: API key in header Upload-Ticket

Response

Idempotent repeat — existing job (same Idempotency-Key)

job_idstring uuid required
status'queued' | 'processing' | 'ready' | 'error' | 'canceled' | 'deleted' required

Job status

file_namestring required
created_atstring date-time required
status_sincestring date-time
pagesinteger nullable
truncatedboolean
output_sizeinteger nullable
download_urlstring uri nullable

populated for ready

tier'anonymous' | 'free' | 'lifetime' | 'builder' | 'pro' | 'business' | 'enterprise' required

EP-069: lifetime is the one-time unlock, ranked BETWEEN free and builder — it raises the interactive limits and carries 600 pages/month, but grants no API keys, hosted MCP, webhooks or batch, so a subscription is genuinely more and its holder may still buy one.

external_idstring nullable
tagsobject nullable

Changes

No recorded changes to this operation across all 1 revision of this API.