stop_reason authority_closed. closable on the subscription says whether it can close now, and closable_from from when. The subscription's own wallet signs and sends it, and gets its rent back. Then you confirm.Limit: 60 calls a minute per API key.Guide: Manage from your server.
The version of this contract the call is written against. Without it, the call is served as the first version, 2026-10-02. Any other value is refused with 400 unsupported_version.
One of2026-10-02
The subscription's id, as POST /v1/subscriptions answered it.
Example:cmg1x0abc0001
The transaction, built for the subscription's own wallet. Nothing has changed yet.
The version the answer is written in: the one asked for, or 2026-10-02 when the call named none, or one this API does not serve.
One of2026-10-02
The id Mesub gave this request, on every answer, errors included, and in request_id on an error body. Quote it to Mesub support to find the request in our logs. Written by Mesub on each request: one sent with the request is ignored.
The calls this route allows the API key in a minute, or the IP of a call without a valid key. Sent on every answer the rate limit counted.
Limits:at least 1
What is left of them in the current minute.
Limits:at least 0
Seconds until the count starts again.
Limits:at least 0
Base64, signed by nobody. The subscription's own wallet signs and sends it.
The block height after which the transaction can no longer land.
When last_valid_block_height is expected to pass: an estimate, about half a minute after the answer. Mesub reads it from how fast block heights went (skipped slots included), taking the faster of the last half hour and the last 30 seconds, and counts the blocks the chain's tip is ahead of what it read, so the estimate errs early, not late, while the chain keeps its pace. The height is the truth: rebuild the transaction when the chain refuses it with an expired blockhash, before this time as after it. Use this for a countdown, or to ask for a fresh transaction before it runs out.
Bearer <API key>. The project's API key, which starts with SUB_. Keep it on your server. Where to get it.
curl -X POST "https://api.mesub.io/v1/subscriptions/cmg1x0abc0001/close" \ -H "Authorization: Bearer $MESUB_API_KEY"
{ "transaction": "gAIBBg0Xq3ZkT9yLmR4vP7wJ8sN2aHcVbE5uYtKfDgQxWz1oMiCj6rA0lSnUhBdXe2GqFpYv7mNcTz4RwK8sLjH5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIDBAUGBwgJCgsM", "last_valid_block_height": "301245678", "transaction_expires_at": "2026-01-01T00:00:33.000Z" }