Dexi Publisher API

The Publisher API from Dexi — 2 operation(s) for publisher.

Operations 2

GET /api/v2/publisher/feeds/{feed_id}/public Published feed as JSON (no authentication) #
GET /api/v2/publisher/feeds/{feed_id}/rss Published feed as RSS 2.0 (no authentication) #

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/dexi-net:dexi-net-publisher-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

dexi-net-publisher-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dexi Public Publisher API
  version: 1.1.0
  description: 'Dexi''s public REST surface: save a bookmark with a personal access token, and read published feeds without authentication. The richer per-user interface (search, notes CRUD, spaced repetition) is the MCP server at https://mcp.dexi.net/mcp (OAuth 2.1) — see https://docs.dexi.net.


    ## Errors

    All errors are JSON with a top-level `detail` — either a plain message string or a structured object with a machine-readable `code`, a human-readable `message`, and context fields (see the `Error` schema). Validation failures use FastAPI''s standard 422 shape (`HTTPValidationError`).


    ## Rate limits

    Rate-limited endpoints return draft-ietf-httpapi-ratelimit-headers response headers (`RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`, `RateLimit-Policy`) on every response, and a 429 with `Retry-After` when exceeded — self-throttle from these rather than retrying blindly.


    ## Versioning and deprecation

    The API is versioned in the URL path (`/api/v1/…`, `/api/v2/…`). Endpoints documented here are stable within their major version: breaking changes ship as a new path version, and a retiring endpoint announces it with `Deprecation` and `Sunset` (RFC 8594) response headers at least 6 months before removal, alongside a notice at https://docs.dexi.net/api/versioning. Undocumented `/api/*` endpoints are internal and carry no stability promise.'
  contact:
    name: Dexi
    url: https://dexi.net
    email: team@dexi.net
  termsOfService: https://dexi.net/terms
  license:
    name: Proprietary — see terms
    url: https://dexi.net/terms
servers:
- url: https://api.dexi.net
tags:
- name: Publisher
paths:
  /api/v2/publisher/feeds/{feed_id}/public:
    get:
      operationId: getPublishedFeed
      summary: Published feed as JSON (no authentication)
      parameters:
      - name: feed_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Feed metadata and entries
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishedFeed'
        '404':
          description: Unknown or unpublished feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: feed_id is not a UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
      security: []
      tags:
      - Publisher
  /api/v2/publisher/feeds/{feed_id}/rss:
    get:
      operationId: getPublishedFeedRss
      summary: Published feed as RSS 2.0 (no authentication)
      parameters:
      - name: feed_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: RSS 2.0 XML
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          content:
            application/rss+xml:
              schema:
                type: string
                description: RSS 2.0 document
        '404':
          description: Unknown or unpublished feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: feed_id is not a UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
      security: []
      tags:
      - Publisher
components:
  headers:
    RateLimit-Remaining:
      description: Requests remaining in the current window
      schema:
        type: integer
    Retry-After:
      description: Seconds to wait before retrying (RFC 9110)
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the window resets
      schema:
        type: integer
    RateLimit-Limit:
      description: Requests allowed in the current window (draft-ietf-httpapi-ratelimit-headers)
      schema:
        type: integer
    RateLimit-Policy:
      description: The quota policy the numbers refer to, e.g. "120;w=60" (120 requests per 60-second window)
      schema:
        type: string
  responses:
    RateLimited:
      description: Rate limit exceeded — wait Retry-After seconds, then retry
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitError'
          example:
            detail:
              code: rate_limited
              message: Too many requests — slow down and try again shortly.
              retry_after: 12
  schemas:
    Error:
      type: object
      description: 'Standard error envelope: every non-2xx JSON response carries `detail` — a structured object on machine-actionable errors, a plain string on simple ones.'
      required:
      - detail
      properties:
        detail:
          oneOf:
          - type: string
            description: Plain error message
          - $ref: '#/components/schemas/ErrorDetail'
    PublishedFeed:
      type: object
      required:
      - id
      - title
      - rss_url
      - entries
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        description:
          type:
          - string
          - 'null'
        author:
          type: string
          description: Publisher's display name; may be empty
        rss_url:
          type: string
          format: uri
          description: RSS 2.0 rendering of the same feed
        entries:
          type: array
          items:
            $ref: '#/components/schemas/FeedEntry'
    ErrorDetail:
      type: object
      description: 'Structured error: `code` is machine-readable and stable; `message` is human-readable; extra fields add context (see NoteLimitError). Known codes: not_found, rate_limited, note_limit.'
      required:
      - code
      - message
      properties:
        code:
          type: string
          description: Stable machine-readable error code
          example: not_found
        message:
          type: string
          description: Human-readable explanation
        hint:
          type: string
          description: Where to look or what to do next
      additionalProperties: true
    HTTPValidationError:
      type: object
      description: FastAPI's standard request-validation error shape
      properties:
        detail:
          type: array
          items:
            type: object
            required:
            - loc
            - msg
            - type
            properties:
              loc:
                type: array
                items:
                  oneOf:
                  - type: string
                  - type: integer
                description: Path to the invalid field
              msg:
                type: string
              type:
                type: string
                description: Validation error type identifier
    FeedEntry:
      type: object
      required:
      - id
      - title
      - text
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        text:
          type: string
          description: Entry body as plain text
        updated:
          type:
          - string
          - 'null'
          format: date-time
    RateLimitError:
      type: object
      required:
      - detail
      properties:
        detail:
          type: object
          required:
          - code
          - message
          - retry_after
          properties:
            code:
              type: string
              enum:
              - rate_limited
            message:
              type: string
            retry_after:
              type: integer
              description: Seconds until a slot frees (mirrors the Retry-After header)
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
      description: dxi_-prefixed personal access token, minted in the Dexi app under Settings → API tokens. Scoped to bookmark saving only.
externalDocs:
  description: Developer documentation
  url: https://docs.dexi.net