Changelog

  1. 2026.09.1 · September 10, 2026

    Run annotations and faster log search

    • Added annotations on runs: attach up to 20 key-value pairs to a run from your handler and filter by them in the dashboard and API.
    • Run log search is now roughly 3x faster for projects with more than 10 million retained runs.
    • Fixed a bug where next_run_at could show a value up to 30 seconds stale on schedules using the six-field cron form.
  2. 2026.08.2 · August 19, 2026

    Region pinning for individual jobs

    • Scale and Enterprise projects can now set region on a per-job basis, overriding the project default.
    • Added region_unavailable (503) as a documented error code with a recommended retry strategy.
    • Node.js SDK 2.9.0 adds typed errors for every documented error code.
  3. 2026.07.1 · July 8, 2026

    Webhook signing secret rotation

    • Signing secrets can now be rotated with a 24-hour overlap period during which both the old and new secret are valid.
    • Deliveries during an overlap window include two v1 values in the Tend-Signature header, one per secret.
    • Python SDK 2.7.1 updates verify_signature to accept multiple secrets.
  4. 2026.06.1 · June 16, 2026

    Global concurrency counters

    • Concurrency keys are now enforced globally across regions, with counters reconciled every 10 seconds.
    • Added GET /v2/concurrency/{key} to inspect the current count, limit, and queued runs for a key.
    • Dashboard now shows queued-behind-concurrency time separately from execution time on each run.
  5. 2026.05.1 · May 13, 2026

    Bulk cancel and reschedule

    • Added POST /v2/jobs/cancel accepting up to 1,000 job IDs or a filter expression.
    • Delayed jobs can now be rescheduled with PATCH /v2/jobs/{id} until the moment they start executing.
    • Go SDK 2.4.2 fixes context cancellation handling in long-running list iterators.
  6. 2026.04.1 · April 7, 2026

    Smarter retry controls

    • Added permanent_failure_codes on jobs and schedules: responses with a listed status code stop retries immediately.
    • Backoff cap is now configurable per job from 1 to 86400 seconds; the default remains 3600.
    • Maximum retry attempts raised from 15 to 25 on all paid plans.
  7. 2026.03.1 · March 1, 2026

    API version 2026-03-01

    • New API version 2026-03-01 becomes the default for new projects. Existing projects stay pinned to their current version until you change it.
    • Cursor pagination responses now always include has_more, removing the need to make a final empty request.
    • Error responses now include a request_id field matching the Tend-Request-Id response header.
  8. 2026.01.2 · January 22, 2026

    Idempotency window extended

    • The Idempotency-Key window has been extended from 12 hours to 24 hours on all plans.
    • Reusing a key with a different body now returns a 409 idempotency_conflict error that includes the ID of the original request.
    • Dashboard adds a tab showing recent idempotent replays for debugging duplicate-looking traffic.