QStash Message
A message published to QStash for delivery to a destination URL
Message QueueTask SchedulingServerlessHTTP MessagingBackground JobsWebhookDead Letter QueueCronUpstash
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/api-evangelist/qstash/main/json-schema/qstash-message.json",
"title": "QStash Message",
"description": "A message published to QStash for delivery to a destination URL",
"type": "object",
"properties": {
"messageId": {
"type": "string",
"description": "Unique identifier for the message assigned by QStash",
"example": "msg_2XavMmRcJHJf7HkNtNqjfVf8uQe"
},
"url": {
"type": "string",
"format": "uri",
"description": "Destination URL the message will be delivered to"
},
"topicName": {
"type": "string",
"description": "URL Group name if delivered via URL Group"
},
"body": {
"type": "string",
"description": "Base64-encoded message body payload"
},
"header": {
"type": "object",
"description": "HTTP headers from the original publish request",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"state": {
"type": "string",
"description": "Current delivery state of the message",
"enum": ["CREATED", "ACTIVE", "DELIVERED", "ERROR", "RETRY", "CANCEL_REQUESTED", "CANCELLED"]
},
"createdAt": {
"type": "integer",
"description": "Unix timestamp (milliseconds) when the message was created"
},
"notBefore": {
"type": "integer",
"description": "Unix timestamp before which delivery will not be attempted"
},
"scheduleId": {
"type": "string",
"description": "Associated schedule ID if message originated from a schedule"
},
"retried": {
"type": "integer",
"minimum": 0,
"description": "Number of delivery attempts made so far"
},
"maxRetries": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"description": "Maximum configured retry attempts"
},
"responseStatus": {
"type": "integer",
"description": "HTTP response status code from the last delivery attempt"
},
"responseBody": {
"type": "string",
"description": "Response body from the last delivery attempt"
},
"nextDeliveryTime": {
"type": "integer",
"description": "Unix timestamp for the next scheduled delivery attempt"
},
"dlqId": {
"type": "string",
"description": "Dead letter queue identifier (present only if message is in DLQ)"
},
"queueName": {
"type": "string",
"description": "Name of the queue if message was delivered via a queue"
},
"callerIP": {
"type": "string",
"description": "IP address of the publisher"
}
},
"required": ["messageId"],
"additionalProperties": false
}
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/qstash-message"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.