orthogonal
This skill provides SDK and HTTP examples for calling the Orthogonal API platform at https://api.orth.sh/v1 and related endpoints. It instructs storing ORTHOGONAL_API_KEY and PRIVATE_KEY in environment variables and contains curl/fetch examples that call https://api.orth.sh and https://x402.orth.sh.
Orthogonal Platform
Orthogonal is a platform for monetizing and consuming APIs. Use these tools to discover, understand, and call any API on the platform.
Base URL: https://api.orth.sh/v1
Authentication
Get your API key at https://orthogonal.com/dashboard/settings
export ORTHOGONAL_API_KEY=orth_live_your_api_key
Tools
1. search
Search for APIs using natural language. Returns a lightweight list of matching endpoints.
Endpoint: POST /v1/search
curl -X POST 'https://api.orth.sh/v1/search' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"prompt": "scrape websites", "limit": 10}'
Parameters:
prompt(string, required): Natural language description of what you're looking forlimit(number, optional): Max results (default: 10, max: 50)
Response: List of matching APIs with endpoints (name, description, method, path, price)
2. get_details
Get full details about a specific endpoint including all parameters.
Endpoint: POST /v1/details
curl -X POST 'https://api.orth.sh/v1/details' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api": "olostep", "path": "/v1/scrapes"}'
Parameters:
api(string, required): API slug from search results (e.g., "olostep", "linkup")path(string, required): Endpoint path from search results (e.g., "/v1/scrapes")
Response: Full endpoint details including:
- Path parameters
- Query parameters (name, type, required, description)
- Body parameters (name, type, required, description)
- Pricing information
- Documentation URL
3. integrate
Get ready-to-use code snippets for integrating an endpoint.
Endpoint: POST /v1/integrate
curl -X POST 'https://api.orth.sh/v1/integrate' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"api": "olostep", "path": "/v1/scrapes", "format": "orth-sdk"}'
Parameters:
api(string, required): API slugpath(string, required): Endpoint pathformat(string, optional): Code format - one of:orth-sdk(default) - Orthogonal SDK (@orth/sdk)run-api- Direct HTTP to /v1/runx402-fetch- x402 payment with JavaScriptx402-python- x402 payment with Pythoncurl- cURL commandall- All formats
Response: Code snippets ready to copy-paste
4. use (run)
Call an API endpoint using your Orthogonal credits.
Endpoint: POST /v1/run
curl -X POST 'https://api.orth.sh/v1/run' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"api": "olostep",
"path": "/v1/scrapes",
"body": {
"url_to_scrape": "https://example.com"
}
}'
Parameters:
api(string, required): API slugpath(string, required): Endpoint pathquery(object, optional): Query parametersbody(object, optional): Request body
Response:
{
"success": true,
"price": 0.01,
"data": { /* API response */ }
}
5. list_all (optional)
List all discoverable APIs with their endpoints. Returns paginated APIs, each containing their endpoints. Use sparingly - prefer search for specific needs.
Endpoint: GET /v1/list-endpoints
curl 'https://api.orth.sh/v1/list-endpoints?limit=100' \
-H 'Authorization: Bearer $ORTHOGONAL_API_KEY'
Parameters:
limit(number, optional): Max APIs to return per page (default: 100, max: 500)offset(number, optional): Pagination offset for APIs
Response: List of APIs, each with nested endpoints array
Typical Workflow
- Search for what you need:
POST /v1/searchwith natural language - Get details for the endpoint:
POST /v1/detailsto see required params - Use the endpoint:
POST /v1/runwith the params
Or for integration:
- Search → Get details → Integrate to get code snippets
SDK Integration
For the simplest integration, use the Orthogonal SDK:
npm install @orth/sdk
import Orthogonal from "@orth/sdk";
const orthogonal = new Orthogonal({
apiKey: process.env.ORTHOGONAL_API_KEY,
});
// Search for APIs
const search = await orthogonal.search("web scraping");
// Call an API
const result = await orthogonal.run({
api: "olostep",
path: "/v1/scrapes",
body: { url_to_scrape: "https://example.com" }
});
x402 Direct Payment
Pay directly with USDC on Base blockchain - no API key required:
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const fetchWithPayment = wrapFetchWithPayment(fetch, account);
const response = await fetchWithPayment(
"https://x402.orth.sh/olostep/v1/scrapes",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url_to_scrape: "https://example.com" })
}
);
Support
- Documentation: https://orthogonal.com/dashboard/docs
- Browse APIs: https://orthogonal.com/discover
- Book a call: https://orthogonal.com/book