reqistry-dev Categories API
Browse and list API categories
Browse and list API categories
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/reqistry-dev:reqistry-dev-categories-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: Public APIs — Mobile Client Categories API
description: 'API reference for the Public APIs Flutter mobile app. Includes anonymous device auth, email/password account linking, profile management, bookmarks, folders, discovery, categories, search, and legacy JSON endpoints.
## Authentication
Bearer-protected endpoints require:
```
Authorization: Bearer
```
Tokens are obtained via `POST /v1/auth/anonymous` or `POST /v1/auth/login-email`.
Public endpoints (no token required): `POST /submit`, `POST /v1/apis` (auth optional, enables submission attribution), `POST /v1/auth/anonymous`, `POST /v1/auth/refresh`, `POST /v1/auth/revoke`, `POST /v1/auth/login-email`, `GET /v1/recently-added`, `GET /v1/recommend` (auth optional, personalizes with bookmarks), `GET /v1/apis/{slug}`, `GET /v1/apis/{id}/alternatives`, `GET /v1/trust-scores/{id}`, `GET /v1/apis/compare`, `GET /v1/change-feed`, `GET /v1/use-case-collections`, categories (unversioned and `/v1` aliases), `GET /search`, `GET /metadata`, `POST /track`, and `POST /admin/v1/contact-messages`. Every other `/v1/*` operation requires a Bearer token.
## Account Types
- **Anonymous**: Device-only, no email. Data tied to device fingerprint.
- **Email-linked**: Has email + password. Can login from any device. Data merges on link.
## Token Lifecycle
- **Access token**: 15 minutes, used for API requests
- **Refresh token**: 30 days, used to rotate access tokens
- Refreshing a token invalidates the old one (single-use rotation)
- Revoking deactivates all tokens for a device'
version: 1.0.0
contact:
name: Public APIs
url: '---'
servers:
- url: http://localhost:4000
description: Local development
- url: '---'
description: Production
tags:
- name: Categories
description: Browse and list API categories
paths:
/categories:
get:
tags:
- Categories
summary: List all categories
description: Returns all active categories with API counts, tags, trending status, descriptions, and image URLs.
operationId: getCategories
responses:
'200':
description: Category list
content:
application/json:
schema:
$ref: '#/components/schemas/CategoriesResponse'
/categories/{id}:
get:
tags:
- Categories
summary: Get single category
description: Returns full details for a single category by slug, including description, imageUrl, tags, apiCount, and isTrending.
operationId: getCategory
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug (e.g. ai, finance, weather)
responses:
'200':
description: Category details
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryDetail'
'404':
description: Category not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/categories/{id}/image:
get:
tags:
- Categories
summary: Get category image URL
description: Returns the banner/image URL for a category. Returns 404 if no image is set.
operationId: getCategoryImage
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug
responses:
'200':
description: Image URL
content:
application/json:
schema:
type: object
properties:
imageUrl:
type: string
format: uri
'404':
description: Category not found or no image available
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/categories/{id}/apis:
get:
tags:
- Categories
summary: List APIs in a category
description: Returns all published APIs for a specific category. Paginated.
operationId: getCategoryApis
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Results per page
responses:
'200':
description: APIs in category
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryApisResponse'
'404':
description: Category not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/trendy-categories:
get:
tags:
- Categories
summary: Trendy categories
description: Returns trending category names.
operationId: getTrendyCategories
responses:
'200':
description: Trendy category names
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: string
/v1/categories:
get:
tags:
- Categories
summary: List all categories
description: Returns all active categories with API counts, tags, trending status, descriptions, and image URLs.
operationId: getV1Categories
responses:
'200':
description: Category list
content:
application/json:
schema:
$ref: '#/components/schemas/V1CategoriesResponse'
/v1/categories/{id}:
get:
tags:
- Categories
summary: Get single category
description: Returns full details for a single category by slug, including description, imageUrl, tags, apiCount, and isTrending.
operationId: getV1Category
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug (e.g. ai, finance, weather)
responses:
'200':
description: Category details
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryDetail'
'404':
description: Category not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v1/categories/{id}/apis:
get:
tags:
- Categories
summary: List APIs in a category
description: Returns all published APIs for a specific category. Paginated.
operationId: getV1CategoryApis
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Results per page
responses:
'200':
description: APIs in category
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryApisResponse'
'404':
description: Category not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v1/categories/{id}/image:
get:
tags:
- Categories
summary: Get category image URL
description: Returns the banner/image URL for a category. Returns 404 if no image is set.
operationId: getV1CategoryImage
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Category slug
responses:
'200':
description: Image URL
content:
application/json:
schema:
type: object
properties:
imageUrl:
type: string
format: uri
'404':
description: Category not found or no image available
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
properties:
error:
type: string
required:
- error
LegacyApiItem:
type: object
description: Legacy API item format (from discovery or search results)
properties:
id:
type: string
description: API UUID
slug:
type: string
description: Stable URL slug for this API. Use this when building /v1/apis/{slug} links instead of deriving from name.
name:
type: string
description:
type: string
auth:
type: string
description: Auth type name
https:
type: string
description: 'HTTPS support as string: ''true'' or ''false'''
cors:
type: string
description: 'CORS status: Yes, No, Unknown'
link:
type: string
format: uri
imageUrl:
type: string
format: uri
nullable: true
description: Custom image URL set in the dashboard
category:
type: string
apiType:
type: string
description: 'API protocol: REST, GraphQL, etc.'
pricing:
type: string
description: 'Pricing type: Free, Freemium, Paid'
rateLimit:
type: string
documentation:
type: string
format: uri
isAlive:
type: boolean
responseTime:
type: number
description: Response time in ms, -1 if dead
statusCode:
type: integer
nullable: true
lastChecked:
type: string
format: date-time
CategoryDetail:
type: object
properties:
id:
type: string
description: Category slug (used as ID)
name:
type: string
description: Display name
description:
type: string
description: Category description
imageUrl:
type: string
format: uri
nullable: true
description: Banner/image URL
apiCount:
type: integer
description: Number of published APIs in this category
tags:
type: array
items:
type: string
description: Searchable tags
isTrending:
type: boolean
description: Whether this category is currently trending
CategoriesResponse:
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/CategoryDetail'
CategoryApisResponse:
type: object
properties:
count:
type: integer
total:
type: integer
page:
type: integer
limit:
type: integer
totalPages:
type: integer
data:
type: array
items:
$ref: '#/components/schemas/LegacyApiItem'
V1CategoriesResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CategoryDetail'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Anonymous device access token from POST /v1/auth/anonymous