OpenAPI Specification
openapi: 3.0.3
info:
title: QStash Dead Letter Queue URL Groups API
description: QStash is a serverless message queue and task scheduling REST API from Upstash that delivers HTTP messages to endpoints reliably without requiring any long-lived connections or infrastructure management. Built entirely on stateless HTTP requests, it is designed for serverless and edge runtimes where traditional message brokers are impractical. QStash supports automatic retries, CRON-based scheduling up to one year in advance, URL group broadcasting for fan-out delivery, FIFO queuing, dead-letter queues, and message deduplication.
version: '2.0'
contact:
name: Upstash Support
url: https://upstash.com/docs/qstash/overall/getstarted
license:
name: Upstash Terms of Service
url: https://upstash.com/trust/terms.pdf
servers:
- url: https://qstash.upstash.io/v2
description: QStash production API
security:
- BearerAuth: []
tags:
- name: URL Groups
description: Manage URL groups for fan-out delivery
paths:
/topics/{urlGroupName}/endpoints:
post:
operationId: upsertUrlGroupEndpoints
summary: Create or update URL group endpoints
description: Create a URL Group or add/update its endpoints. URL groups allow fan-out message delivery to multiple destinations simultaneously.
tags:
- URL Groups
parameters:
- name: urlGroupName
in: path
required: true
description: Name of the URL Group (alphanumeric, underscore, hyphen, and dot characters only)
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UrlGroupUpsert'
example:
endpoints:
- name: endpoint-one
url: https://example.com/handler1
- name: endpoint-two
url: https://example.com/handler2
responses:
'200':
description: URL Group endpoints created or updated
'401':
$ref: '#/components/responses/Unauthorized'
/topics/{urlGroupName}:
get:
operationId: getUrlGroup
summary: Get a URL group
description: Retrieve configuration and endpoints of a URL Group.
tags:
- URL Groups
parameters:
- name: urlGroupName
in: path
required: true
schema:
type: string
responses:
'200':
description: URL Group details
content:
application/json:
schema:
$ref: '#/components/schemas/UrlGroup'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteUrlGroup
summary: Delete a URL group
description: Delete a URL Group and all its endpoint configurations.
tags:
- URL Groups
parameters:
- name: urlGroupName
in: path
required: true
schema:
type: string
responses:
'200':
description: URL Group deleted
'404':
$ref: '#/components/responses/NotFound'
/topics/{urlGroupName}/endpoints/{endpointName}:
delete:
operationId: deleteUrlGroupEndpoint
summary: Remove an endpoint from a URL group
description: Remove a specific endpoint from a URL Group.
tags:
- URL Groups
parameters:
- name: urlGroupName
in: path
required: true
schema:
type: string
- name: endpointName
in: path
required: true
schema:
type: string
responses:
'200':
description: Endpoint removed
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
Unauthorized:
description: Missing or invalid authentication token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
UrlGroupEndpoint:
type: object
required:
- url
properties:
name:
type: string
description: Identifier for this endpoint within the URL Group
url:
type: string
format: uri
description: Target URL for this endpoint
UrlGroup:
type: object
properties:
name:
type: string
description: URL Group name
endpoints:
type: array
items:
$ref: '#/components/schemas/UrlGroupEndpoint'
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error message
UrlGroupUpsert:
type: object
required:
- endpoints
properties:
endpoints:
type: array
items:
$ref: '#/components/schemas/UrlGroupEndpoint'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: Bearer token obtained from the Upstash console at https://console.upstash.com/qstash. Alternatively, pass as query parameter `qstash_token`.
externalDocs:
description: QStash Documentation
url: https://upstash.com/docs/qstash/overall/getstarted