Orthogonal Discovery API
Find APIs and endpoints, inspect parameters, and get code snippets.
Find APIs and endpoints, inspect parameters, and get code snippets.
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/orthogonal-discovery-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Orthogonal Discovery API
description: Orthogonal is a unified API and payment layer that lets AI agents discover, access, and pay for external services from a single catalog of 40+ third-party APIs. Agents describe what they need in natural language; Orthogonal returns the right service and proxies the call, metering a per-call price. This OpenAPI description was GENERATED from the public developer documentation at https://docs.orthogonal.com (no first-party OpenAPI is published) and captures the documented Discovery and Run surface. Endpoint shapes are faithful to the docs; verify against the live API before code generation.
version: v1
contact:
name: Orthogonal
url: https://docs.orthogonal.com
x-provenance:
generated: '2026-07-20'
method: generated
source: https://docs.orthogonal.com/api-reference/introduction.md
servers:
- url: https://api.orthogonal.com
description: Production
security:
- bearerAuth: []
tags:
- name: Discovery
description: Find APIs and endpoints, inspect parameters, and get code snippets.
paths:
/v1/search:
post:
operationId: searchApis
tags:
- Discovery
summary: Search APIs using natural language
description: Find APIs and matching endpoints from a natural-language prompt.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- prompt
properties:
prompt:
type: string
description: Natural language description of what you're looking for.
limit:
type: integer
default: 10
maximum: 50
description: Maximum results to return.
responses:
'200':
description: Matching APIs and endpoints.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
/v1/details:
post:
operationId: getDetails
tags:
- Discovery
summary: Get full parameter information for an endpoint
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- api
- path
properties:
api:
type: string
description: API slug from search results (e.g. 'apollo', 'linkup').
path:
type: string
description: Endpoint path (e.g. '/v1/people/match').
responses:
'200':
description: Endpoint parameter details.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/integrate:
post:
operationId: integrate
tags:
- Discovery
summary: Get ready-to-use code snippets for an endpoint
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- api
- path
properties:
api:
type: string
path:
type: string
responses:
'200':
description: Code snippets for the endpoint.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/list-endpoints:
get:
operationId: listEndpoints
tags:
- Discovery
summary: List all available APIs and endpoints
parameters:
- name: limit
in: query
schema:
type: integer
default: 100
maximum: 500
description: Maximum number of APIs to return.
- name: offset
in: query
schema:
type: integer
default: 0
description: Number of APIs to skip (for pagination).
responses:
'200':
description: Catalog of APIs with their endpoints.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
apis:
type: array
items:
type: object
count:
type: integer
totalEndpoints:
type: integer
pagination:
type: object
properties:
limit:
type: integer
offset:
type: integer
hasMore:
type: boolean
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
SearchResponse:
type: object
properties:
success:
type: boolean
results:
type: array
items:
$ref: '#/components/schemas/ApiResult'
count:
type: integer
apisCount:
type: integer
prompt:
type: string
searchType:
type: string
responseTime:
type: number
EndpointResult:
type: object
properties:
id:
type: string
format: uuid
path:
type: string
method:
type: string
description:
type: string
price:
type: number
isPayable:
type: boolean
verified:
type: boolean
score:
type: number
ApiResult:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
slug:
type: string
baseUrl:
type: string
payableBaseUrl:
type: string
endpoints:
type: array
items:
$ref: '#/components/schemas/EndpointResult'
Error:
type: object
properties:
success:
type: boolean
const: false
error:
type: string
description: Human-readable error message.
code:
type: string
description: Machine-readable error code.
enum:
- UNAUTHORIZED
- INSUFFICIENT_CREDITS
- RATE_LIMITED
- NOT_FOUND
- UPSTREAM_ERROR
responses:
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: API or endpoint not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API key as a bearer token. Live keys are prefixed ''orth_live_'' and test keys ''orth_test_''. Send as ''Authorization: Bearer orth_live_...''.'