Kurrent Subscriptions API

Persistent (competing consumer) subscription management and consumption

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 email required.

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

OpenAPI Specification

kurrent-subscriptions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: KurrentDB HTTP Admin 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. This OpenAPI description is an API Evangelist transcription of the provider's published HTTP API Reference at https://docs.kurrent.io/server/v26.1/http-api/api.html — Kurrent does not publish an OpenAPI document of its own. Paths, methods, custom headers, media types and status codes are taken from that reference; nothing has been invented. The base URL is the address of your own KurrentDB node or Kurrent Cloud cluster (the same URL you use for the admin UI), which listens on port 2113 by default.
  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:
    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
    Unauthorized:
      description: Unauthorized — credentials were missing, invalid, or lacked ACL permission
      content:
        text/plain:
          schema:
            type: string
    JsonOk:
      description: OK
      content:
        application/json:
          schema:
            type: object
  parameters:
    NackAction:
      name: action
      in: query
      description: What the server should do with the negatively acknowledged message
      schema:
        type: string
        enum:
        - Park
        - Retry
        - Skip
        - Stop
    Subscription:
      name: subscription
      in: path
      required: true
      description: Name of the persistent subscription group
      schema:
        type: string
    MessageId:
      name: messageid
      in: path
      required: true
      description: Identifier of the message to acknowledge
      schema:
        type: string
        format: uuid
    Stream:
      name: stream
      in: path
      required: true
      description: Name of the event stream
      schema:
        type: string
    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