Changelog
Halyard release notes
Every change to the API, with the version you pin against and the date it shipped.
Updated 13 August 2026API v2.4.11 breaking change since v1.9
Note
The base URL carries the HTTP surface and has been
/v1 since launch; the release number below is the service running behind it. A change that removes a shape gets an overlap window and appears here as breaking.7 of 7 releases · 18 changes
v2.4.1
13 August 2026
current
- fixed
- The rate-limit headers were omitted from 204 responses. Acknowledge and queue delete now carry X-RateLimit-Remaining and X-RateLimit-Reset like every other call.
- fixed
- Extending an expired lease answered 200 with a stale expiry. It answers 409 lease_expired, and the message is already back in the queue.
- changed
- The error body dropped a request id field that was never populated. An error carries a stable code and a human message, and nothing else.
v2.4.0
30 July 2026
- added
- Extend a lease. One call per half-timeout keeps long work in hand instead of racing the visibility timeout, and the extension is added to the current expiry rather than to now.
- added
- Return work early with nack, and an optional retry_after that overrides the doubling backoff once.
- changed
- The acknowledge ceiling rose from 1,000 to 5,000 calls a second, matched to the publish burst so an ack never becomes the bottleneck.
Endpoints added
PATCH
/queues/{queue}/leases/{lease}200POST
/queues/{queue}/leases/{lease}/nack204v2.3.2
12 June 2026
- fixed
- Idempotency keys were forgotten after six hours instead of the documented 24, so a publish retried the next morning enqueued a second copy.
- fixed
- A queue deleted with a lease open left that lease answering 200. In-flight consumers now get 404 on the next ack, which is what the reference always said.
v2.3.0
21 May 2026
- added
- Dead letters, with the delivery history that got a message there, and replay to move it back with delivery_count reset and the ordering key preserved.
- changed
- max_deliveries defaults to 5, up from 3. Queues created before this release kept their own value.
- fixed
- A message that exhausted its deliveries during a region failover could be redelivered once more. It dead-letters on the fifth attempt.
Endpoints added
GET
/queues/{queue}/dead-letters200POST
/queues/{queue}/dead-letters/replay202v2.2.0
4 March 2026
- added
- ordering_key on publish. Messages sharing a key are delivered in publish order, and different keys run in parallel, so one slow customer never blocks another.
- added
- ap-south joins eu-west, us-east and us-west. A queue’s region is fixed after creation.
- changed
- Long polling holds a lease call open for up to 20 seconds, up from 5. Idle consumers cost nothing extra.
v2.0.0
14 October 2025
- breaking
- Leases replaced receipts. A lease call returns one lease id for the whole batch, and ack and nack take that lease instead of a per-message receipt. Both shapes were accepted for 90 days; receipts were switched off on this date.
- changed
- visibility_timeout is a queue setting a consumer overrides per lease, instead of a value carried on every message.
the ack that changed
# v1.9: the ack named the message, one call per message
curl "$API/queues/orders/messages/msg_01HQ8Z3F/ack" -X POST
# v2.0: the ack names the lease, and closes the whole batch
curl "$API/queues/orders/leases/lse_01HQ8Z/ack" -X POSTv1.9.0
3 June 2025
- deprecated
- The v1 line is closed to features. It takes security fixes until 1 June 2027, and the documentation stays online after that.
- added
- X-RateLimit-Remaining and X-RateLimit-Reset, backported from the v2 line so a consumer can read its headroom on either.