Dexi Publisher API
The Publisher API from Dexi — 2 operation(s) for publisher.
The Publisher API from Dexi — 2 operation(s) for publisher.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/dexi-net:dexi-net-publisher-api"
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.
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: 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