Kurrent Subscriptions API

Persistent (competing consumer) subscription management and consumption

Operations 13

GET /subscriptions List all persistent subscriptions #
GET /subscriptions/{stream} List the persistent subscriptions on a stream #
GET /subscriptions/{stream}/{subscription} Read events from a persistent subscription #
PUT /subscriptions/{stream}/{subscription} Create a persistent subscription #
POST /subscriptions/{stream}/{subscription} Update a persistent subscription #
DELETE /subscriptions/{stream}/{subscription} Delete a persistent subscription #
GET /subscriptions/{stream}/{subscription}/info Get details of a persistent subscription #
GET /subscriptions/{stream}/{subscription}/{count} Read a number of events from a persistent subscription #
POST /subscriptions/{stream}/{subscription}/ack Acknowledge a set of messages #
POST /subscriptions/{stream}/{subscription}/ack/{messageid} Acknowledge a single message #
POST /subscriptions/{stream}/{subscription}/nack Negatively acknowledge a set of messages #
POST /subscriptions/{stream}/{subscription}/nack/{messageid} Negatively acknowledge a single message #
POST /subscriptions/{stream}/{subscription}/replayParked Replay the parked messages of a persistent subscription #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/kurrent-subscriptions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kurrent-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: KurrentDB HTTP Subscriptions API
  version: v26.1
  summary: AtomPub-over-HTTP interface to KurrentDB streams, subscriptions, projections, users and node administration.
  description: KurrentDB (formerly EventStoreDB) exposes a native AtomPub-over-HTTP interface alongside its primary gRPC protocol.
  contact:
    name: Kurrent
    url: https://www.kurrent.io/
  license:
    name: Kurrent License
    url: https://www.kurrent.io/terms-of-use
  x-apievangelist-provenance:
    generated: '2026-07-19'
    method: generated
    source: https://docs.kurrent.io/server/v26.1/http-api/api.html
    note: Faithful transcription of the provider's published HTTP API reference table. Operation summaries mirror the reference; request/response schemas are intentionally left open where the provider does not publish them.
servers:
- url: https://{host}:{port}
  description: Your KurrentDB node or Kurrent Cloud cluster
  variables:
    host:
      default: localhost
      description: Hostname of the KurrentDB node (the same host you use for the admin UI)
    port:
      default: '2113'
      description: KurrentDB HTTP port
security:
- basicAuth: []
tags:
- name: Subscriptions
  description: Persistent (competing consumer) subscription management and consumption
paths:
  /subscriptions:
    get:
      tags:
      - Subscriptions
      operationId: listSubscriptions
      summary: List all persistent subscriptions
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}:
    parameters:
    - $ref: '#/components/parameters/Stream'
    get:
      tags:
      - Subscriptions
      operationId: listSubscriptionsForStream
      summary: List the persistent subscriptions on a stream
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    get:
      tags:
      - Subscriptions
      operationId: readSubscription
      summary: Read events from a persistent subscription
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
    put:
      tags:
      - Subscriptions
      operationId: createSubscription
      summary: Create a persistent subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersistentSubscriptionSettings'
      responses:
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      tags:
      - Subscriptions
      operationId: updateSubscription
      summary: Update a persistent subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersistentSubscriptionSettings'
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      tags:
      - Subscriptions
      operationId: deleteSubscription
      summary: Delete a persistent subscription
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/info:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    get:
      tags:
      - Subscriptions
      operationId: getSubscriptionInfo
      summary: Get details of a persistent subscription
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/{count}:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    - $ref: '#/components/parameters/Count'
    get:
      tags:
      - Subscriptions
      operationId: readSubscriptionEvents
      summary: Read a number of events from a persistent subscription
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/ack:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    post:
      tags:
      - Subscriptions
      operationId: ackMessages
      summary: Acknowledge a set of messages
      parameters:
      - name: ids
        in: query
        required: true
        description: Comma-separated list of message ids to acknowledge
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/ack/{messageid}:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    - $ref: '#/components/parameters/MessageId'
    post:
      tags:
      - Subscriptions
      operationId: ackMessage
      summary: Acknowledge a single message
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/nack:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    post:
      tags:
      - Subscriptions
      operationId: nackMessages
      summary: Negatively acknowledge a set of messages
      parameters:
      - name: ids
        in: query
        required: true
        description: Comma-separated list of message ids to negatively acknowledge
        schema:
          type: string
      - $ref: '#/components/parameters/NackAction'
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/nack/{messageid}:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    - $ref: '#/components/parameters/MessageId'
    post:
      tags:
      - Subscriptions
      operationId: nackMessage
      summary: Negatively acknowledge a single message
      parameters:
      - $ref: '#/components/parameters/NackAction'
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions/{stream}/{subscription}/replayParked:
    parameters:
    - $ref: '#/components/parameters/Stream'
    - $ref: '#/components/parameters/Subscription'
    post:
      tags:
      - Subscriptions
      operationId: replayParkedMessages
      summary: Replay the parked messages of a persistent subscription
      responses:
        '200':
          $ref: '#/components/responses/JsonOk'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    Unauthorized:
      description: Unauthorized — credentials were missing, invalid, or lacked ACL permission
      content:
        text/plain:
          schema:
            type: string
    Created:
      description: Created
      headers:
        Location:
          description: URI of the created resource
          schema:
            type: string
    BadRequest:
      description: Bad Request — the request was malformed or violated an expected version
      content:
        text/plain:
          schema:
            type: string
    JsonOk:
      description: OK
      content:
        application/json:
          schema:
            type: object
  parameters:
    MessageId:
      name: messageid
      in: path
      required: true
      description: Identifier of the message to acknowledge
      schema:
        type: string
        format: uuid
    Subscription:
      name: subscription
      in: path
      required: true
      description: Name of the persistent subscription group
      schema:
        type: string
    Stream:
      name: stream
      in: path
      required: true
      description: Name of the event stream
      schema:
        type: string
    NackAction:
      name: action
      in: query
      description: What the server should do with the negatively acknowledged message
      schema:
        type: string
        enum:
        - Park
        - Retry
        - Skip
        - Stop
    Count:
      name: count
      in: path
      required: true
      description: Number of events to return
      schema:
        type: integer
  schemas:
    PersistentSubscriptionSettings:
      type: object
      description: Settings of a persistent (competing consumer) subscription
      properties:
        resolveLinktos:
          type: boolean
        startFrom:
          type: integer
        extraStatistics:
          type: boolean
        checkPointAfterMilliseconds:
          type: integer
        liveBufferSize:
          type: integer
        readBatchSize:
          type: integer
        bufferSize:
          type: integer
        maxCheckPointCount:
          type: integer
        maxRetryCount:
          type: integer
        maxSubscriberCount:
          type: integer
        messageTimeoutMilliseconds:
          type: integer
        minCheckPointCount:
          type: integer
        namedConsumerStrategy:
          type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: KurrentDB supports HTTP Basic authentication for the HTTP API, with access control lists (ACLs) applied per stream. See https://docs.kurrent.io/server/v26.1/http-api/security.html
externalDocs:
  description: KurrentDB HTTP API documentation
  url: https://docs.kurrent.io/server/v26.1/http-api/introduction.html