Monid Public Registry API
The Public Registry API from Monid — 5 operation(s) for public registry.
The Public Registry API from Monid — 5 operation(s) for public registry.
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/monid-public-registry-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Monid Public Registry API
version: 0.1.0
description: Agentic payment platform for data — agents discover and buy data on demand. Authenticated `/v1/*` routes accept a Monid API key or Clerk JWT as a Bearer token. All errors return `{ code, message }`. List endpoints use cursor pagination; consult each operation schema for its last-page cursor encoding.
servers:
- url: https://api.monid.ai
description: Production
- url: https://monid.ai
description: Public registry alias (public/v1 only)
tags:
- name: Public Registry
paths:
/public/v1/stats:
get:
tags:
- Public Registry
summary: Catalog-wide aggregate counts
description: Number of enabled endpoints and providers in the public catalog.
responses:
'200':
description: Aggregate counts
content:
application/json:
schema:
$ref: '#/components/schemas/PublicRegistryStats'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/providers:
get:
tags:
- Public Registry
summary: List providers
description: Cursor-paginated list of providers with their enabled-endpoint counts.
parameters:
- schema:
type: integer
exclusiveMinimum: 0
description: Max items per page (server-side cap applies).
example: 20
required: false
description: Max items per page (server-side cap applies).
name: limit
in: query
- schema:
type: string
description: Cursor returned by the previous page.
required: false
description: Cursor returned by the previous page.
name: cursor
in: query
responses:
'200':
description: Providers page
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PublicProviderEntry'
cursor:
type: string
description: Opaque cursor for the next page. Absent on the last page.
required:
- items
'400':
description: Bad request — input failed validation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/providers/{provider}/endpoints:
get:
tags:
- Public Registry
summary: List a provider's endpoints
description: Cursor-paginated list of a provider's enabled endpoints (display copy + price). 404 when the provider has no enabled endpoints.
parameters:
- schema:
type: string
minLength: 1
description: Provider slug.
example: exa
required: true
description: Provider slug.
name: provider
in: path
- schema:
type: integer
exclusiveMinimum: 0
description: Max items per page (server-side cap applies).
example: 20
required: false
description: Max items per page (server-side cap applies).
name: limit
in: query
- schema:
type: string
description: Cursor returned by the previous page.
required: false
description: Cursor returned by the previous page.
name: cursor
in: query
responses:
'200':
description: Endpoints page
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PublicEndpointInfo'
cursor:
type: string
description: Opaque cursor for the next page. Absent on the last page.
total:
type: integer
minimum: 0
description: Total number of enabled endpoints matching the underlying query, irrespective of pagination.
required:
- items
'400':
description: Bad request — input failed validation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Provider not found (or has no enabled endpoints)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/search:
get:
tags:
- Public Registry
summary: Keyword search over the catalog
description: Anonymous BM25 keyword search over the endpoint catalog.
parameters:
- schema:
type: string
minLength: 1
maxLength: 200
description: Free-text query. Required, 1..200 chars.
example: twitter scraper
required: true
description: Free-text query. Required, 1..200 chars.
name: q
in: query
- schema:
type: integer
exclusiveMinimum: 0
description: Max results to return. Server caps this at the configured public search max (currently 20).
required: false
description: Max results to return. Server caps this at the configured public search max (currently 20).
name: limit
in: query
- schema:
type: string
description: Opaque pagination token from a previous response. Pass it back unchanged to fetch the next page.
required: false
description: Opaque pagination token from a previous response. Pass it back unchanged to fetch the next page.
name: cursor
in: query
responses:
'200':
description: Search results page
content:
application/json:
schema:
$ref: '#/components/schemas/PublicSearchResponse'
'400':
description: Bad request — input failed validation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/providers/{provider}/endpoints/{endpoint}:
get:
tags:
- Public Registry
summary: Get one endpoint
description: Fetch a single public endpoint card. `endpoint` is the endpoint path and may itself contain slashes (e.g. `apidojo/tweet-scraper`).
parameters:
- schema:
type: string
example: apify
required: true
name: provider
in: path
- schema:
type: string
description: Endpoint path; may contain slashes.
example: apidojo/tweet-scraper
required: true
description: Endpoint path; may contain slashes.
name: endpoint
in: path
responses:
'200':
description: Endpoint card
content:
application/json:
schema:
$ref: '#/components/schemas/PublicEndpointInfo'
'404':
description: Endpoint not found (missing or disabled)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
PublicProviderEntry:
type: object
properties:
provider:
type: string
description: Provider slug.
displayName:
type: string
description: Resolved display label (curation > slug).
displayDescription:
type: string
endpointCount:
type: integer
minimum: 0
description: Number of currently-enabled endpoints.
required:
- provider
- displayName
- endpointCount
Error:
type: object
properties:
code:
type: integer
description: HTTP status code, duplicated in the body.
example: 400
message:
type: string
description: Human-readable error description.
example: Bad Request
required:
- code
- message
PublicEndpointInfo:
type: object
properties:
provider:
type: string
description: Provider slug.
example: exa
providerDisplayName:
type: string
description: Resolved provider display name (curation > slug).
providerDisplayDescription:
type: string
description: Resolved provider display blurb.
endpoint:
type: string
description: Endpoint path.
example: /search
displayName:
type: string
description: Resolved endpoint display label. Always populated.
displayDescription:
type: string
description: Resolved endpoint display blurb. May be empty.
price:
$ref: '#/components/schemas/PublicPrice'
tags:
type: array
items:
type: string
description: User-facing tags (e.g. `["verified"]`). Always an array; empty when no tags are set on the indexed wrapper.
required:
- provider
- providerDisplayName
- endpoint
- displayName
- displayDescription
- price
- tags
PublicPrice:
type: object
properties:
type:
type: string
amount:
anyOf:
- type: object
properties:
value:
type: number
currency:
type: string
enum:
- USD
required:
- value
- currency
- type: object
properties:
type:
type: string
enum:
- PER_TOKEN
amount:
type: object
properties:
value:
type: number
currency:
type: string
enum:
- USD
required:
- value
- currency
per:
type: number
unit:
type: string
enum:
- token
- character
required:
- type
- amount
- per
- unit
flatFee:
type: object
properties:
value:
type: number
currency:
type: string
enum:
- USD
required:
- value
- currency
period:
type: object
properties:
unit:
type: string
enum:
- MINUTE
- DAY
- MONTH
count:
type: integer
exclusiveMinimum: 0
required:
- unit
- count
per:
type: object
properties:
unit:
type: string
enum:
- MINUTE
- DAY
- MONTH
count:
type: integer
exclusiveMinimum: 0
required:
- unit
- count
selectors:
type: array
items:
type: object
properties:
label:
type: string
key:
type: string
in:
type: string
enum:
- body
- queryParam
- pathParam
required:
- label
- key
- in
variants:
type: array
items:
type: object
properties:
when:
type: object
additionalProperties:
anyOf:
- type: string
- type: number
amount:
anyOf:
- type: object
properties:
value:
type: number
currency:
type: string
enum:
- USD
required:
- value
- currency
- type: object
properties:
type:
type: string
enum:
- PER_TOKEN
amount:
type: object
properties:
value:
type: number
currency:
type: string
enum:
- USD
required:
- value
- currency
per:
type: number
unit:
type: string
enum:
- token
- character
required:
- type
- amount
- per
- unit
label:
type: string
required:
- when
- amount
required:
- type
- amount
description: User-facing price (markup applied).
PublicRegistryStats:
type: object
properties:
endpointCount:
type: integer
minimum: 0
providerCount:
type: integer
minimum: 0
required:
- endpointCount
- providerCount
PublicSearchResponse:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PublicEndpointInfo'
query:
type: string
description: Echo of the `q` input.
count:
type: integer
minimum: 0
description: Number of items on THIS page (not the total).
cursor:
type: string
description: Cursor for the next page; absent when no more pages.
total:
type: integer
minimum: 0
description: Total endpoints matching the query, irrespective of pagination. Capped — see `totalIsCapped`.
totalIsCapped:
type: boolean
description: '`true` when `total` met or exceeded the count cap; the real count is unknown but >= `total`.'
required:
- items
- query
- count
securitySchemes:
Bearer:
type: http
scheme: bearer
description: 'Monid API key (`Authorization: Bearer mk_...`) or Clerk-issued JWT.'