Skip to content

Changelog

Every change to Halyard, as it ships.

New endpoints, SDK releases, fixes and deprecations for the API and the platform. Each release links to the docs it touches.

API
v3.4
Node.js
3.4.2
Python
3.4.0
Ruby
3.2.5

6 releases

  1. v3.4permalinkLatest
    NewImprovedFixed

    Schedules are generally available

    Cron schedules with time zones leave beta, with overlap control, pause and resume, and a preview of the next runs before you save.

    • NewSchedules API: create, update, pause, resume and delete recurring jobs with POST /schedules.
    • NewIANA time zones on schedules, with correct handling of daylight saving transitions.
    • Newoverlap option (skip, queue or allow) decides what happens when a run is still going.
    • ImprovedGET /schedules/:id/preview returns the next 10 run times so you can check an expression.
    • ImprovedNode.js SDK 3.4.2 and Python SDK 3.4.0 ship typed schedule helpers.
    • FixedJobs scheduled exactly at a minute boundary no longer occasionally ran one second early.
    Create a schedule
    const schedule = await halyard.schedules.create({  cron: "0 9 * * MON-FRI",  timezone: "Europe/Berlin",  overlap: "skip",  job: {    queue: "reports",    task: "build-daily-report",    payload: { team_id: "team_42Rv" },  },}); console.log(schedule.id, schedule.next_run_at); // sch_8Hd3Kw1Pz5
    Read the Schedules guide
  2. v3.3permalink
    NewImprovedFixedDeprecated

    Batch create and typed payloads

    Enqueue up to 500 jobs in one request, and let the SDKs check payload shapes before they leave your app.

    • NewPOST /jobs/batch creates up to 500 jobs in one request and counts as one request against rate limits.
    • NewTyped task registry in the Node.js SDK; Pydantic models for payloads in the Python SDK.
    • NewJSON Schema on queues: payloads that don't match are rejected with validation_failed.
    • ImprovedDead-letter queue view shows the last error and a diff of the payload across attempts.
    • FixedCursor pagination on GET /jobs could skip a job when two were created in the same millisecond.
    • DeprecatedThe priority field on jobs is deprecated in favor of queue-level priority. It is ignored from v4.
    Batch create
    jobs = halyard.jobs.create_batch([    {        "queue": "emails",        "task": "send-digest",        "payload": {"user_id": uid},    }    for uid in user_ids]) print(len(jobs.created), len(jobs.failed))  # 500 0
  3. v3.2permalink
    NewImprovedFixed

    Secret rotation for webhooks

    Roll webhook signing secrets without downtime, and resend any delivery from the last 30 days.

    • NewPOST /webhook_endpoints/:id/roll_secret signs with old and new secrets for 24 hours.
    • NewResend any delivery from the dashboard or with halyard events resend in the CLI.
    • Improvedhalyard listen forwards to several local URLs at once with repeated --forward-to flags.
    • ImprovedWebhook deliveries now time out after 10 seconds instead of 30, so retries start sooner.
    • FixedEndpoints disabled after failures now send an endpoint.disabled event to the project's other endpoints.
  4. v3.1permalink
    NewImprovedFixed

    EU and Asia Pacific regions

    Keep jobs, events and logs in Frankfurt or Singapore. Choose a region when you create a project.

    • Neweu (Frankfurt) and ap (Singapore) regions, with failover inside the same region.
    • Newregion option in every official SDK.
    • ImprovedIP allowlists accept IPv6 ranges and up to 50 entries per key.
    • FixedAudit log entries for key deletions now include the key's last four characters.
    Data residency
  5. v3.0permalink
    NewImprovedDeprecated

    API v3

    A cleaner API with consistent naming, idempotency on every create, events and subscriptions, and SDKs rebuilt from the ground up.

    • NewEvents and subscriptions: publish once, fan out to jobs and webhooks.
    • NewIdempotency-Key header on every POST, kept for 24 hours.
    • NewError objects with a stable type and a specific code, plus request_id on every response.
    • ImprovedRewritten SDKs for Node.js, Python, Go and Ruby with automatic retries and typed errors.
    • DeprecatedAPI v2 enters maintenance and is supported until June 30, 2027.
    • DeprecatedAPI v1 reaches end of life and stops answering on December 1, 2026.
    Renamed in v3
    v2                          v3POST /tasks              →  POST /jobstask.name                →  job.tasktask.args                →  job.payloadretry_limit              →  max_attemptsX-Halyard-Signature      →  Halyard-Signature
    Upgrade guide
  6. v2.9permalink
    ImprovedFixedDeprecated

    Final v2 feature release

    The last v2 release with new features. From here on, v2 receives security and critical fixes only.

    • ImprovedWorkers report memory usage and are restarted automatically when they exceed the queue's limit.
    • FixedRetries could be scheduled twice when a worker lost its connection mid-acknowledgement.
    • FixedDashboard search now matches job IDs with or without the job_ prefix.
    • DeprecatedX-Halyard-Signature is replaced by Halyard-Signature in v3. Both are sent until v2 end of life.

Suggested