Changelog

Changelog

Changes to the public REST API, SDKs, MCP server, and documentation. Purely internal changes (infrastructure, tests, refactors) are not listed here. All dates are UTC.

The API version field in webhook payloads is currently 2026-03-18. We will publish a new api_version string whenever a breaking change lands and follow a 6-month deprecation window before the old version stops being served. See Versioning.

2026-04

Added

  • Docs: Files API reference page (/api-reference/files) covering GET /v1/jobs/:id/files, POST /v1/files/:id/refresh_url, and video keyframe retrieval.
  • Docs: Expanded MCP / AI agent integration guide with accurate 7-tool list (create_job, create_job_and_wait, get_job, list_jobs, cancel_job, get_job_files, get_credits), Claude Code / Claude Desktop / Cursor configuration snippets, and an end-to-end agent pattern.
  • Docs: Webhook handling guide now covers 11 event types — job.flagged, credits.purchased, credits.low_balance, credits.auto_topped_up, credits.expiring_soon, credits.expired.
  • Docs: Worker Platform overview (/guides/worker-platform) — buyer-facing explanation of worker tiers, priority window, and payout model.
  • Docs: Pre-check gates section in the AI Scoring Rubric — explains submissions rejected before scoring (resolution floor, duration bounds, reverse image search, authenticity signals, Whisper hallucination suppression, content-hash dedup).
  • API: Account deletion endpoint for workers per Apple Guideline 5.1.1(v).

Fixed

  • API: cancel_job protected by SELECT FOR UPDATE — double-cancel on concurrent requests can no longer double-refund. Emits a single job.cancelled webhook.
  • API: onSend hooks hardened against ERR_HTTP_HEADERS_SENT during idempotency cache replay (no more crash-loop on cached-response paths).

2026-03

Added

  • API: submission.scored webhook event (fires for every scored submission, approved and rejected) carrying full annotation payload and star rating.
  • API: Video keyframe extraction — 3 representative frames per video persisted to S3; URLs returned on the file object.
  • API: Device info + worker region + tiered worker prioritization (new/bronze/silver/gold/diamond). Buyer-observable via file.device_info and file.worker_region; priority tiers are worker-side.
  • AI Scoring: 5 audio annotation additions — emotion_tone, room_acoustics, background_sounds, per-segment confidence, and speaker_demographics.
  • AI Scoring: Production-grade image annotations — object confidence scores, safety (nsfw/violence/pii), quality_metrics (blur, exposure, noise).
  • AI Scoring: Automatic EXIF normalization — images are rotated to correct orientation before scoring and delivery.
  • API: captured_at field on file responses (device EXIF capture timestamp, distinct from created_at).
  • API: GPS geotag on submissions (worker_region derived server-side from GPS).
  • API: 8 server-side fraud detection checks on upload (device attestation, content hash, velocity, EXIF consistency, among others).

Fixed

  • Billing: Stripe webhook raw body parsing — credits now apply on purchase (previously stuck until manual reconciliation).
  • Payouts: Stripe Connect refresh syncs live status from Stripe to DB on poll.
  • Race conditions: Timing-safe secret comparison across key rotations; no more race windows on rotate → use-of-old.