Quickstart
Get up and running with Orsa in under 2 minutes.
1. Get Your API Key
Sign up at orsa.dev/signup and create an API key from the dashboard.
2. Install the SDK
TypeScript / Node.js
npm install @orsa.dev/sdk
# or
bun add @orsa.dev/sdk
# or
pnpm add @orsa.dev/sdkRequires Node ≥ 18 (native fetch). Ships ESM + CJS + TypeScript types.
Python
pip install orsa3. Make Your First Request
Using cURL
curl -X GET "https://api.orsa.dev/v1/brand/retrieve?domain=stripe.com" \
-H "Authorization: Bearer YOUR_API_KEY"Using TypeScript
import Orsa from '@orsa.dev/sdk';
const client = new Orsa({ apiKey: process.env.ORSA_API_KEY! });
const brand = await client.brand.retrieve({ domain: 'stripe.com' });
console.log(brand.title); // "Stripe"
console.log(brand.description); // "Financial infrastructure for the internet..."
console.log(brand.colors[0]?.hex); // "#635BFF"
console.log(brand.logos[0]?.url); // logo URL
console.log(brand.socials); // [{ type: "github", url: "https://github.com/stripe" }, ...]
console.log(brand.links.pricing); // "https://stripe.com/pricing"Methods return the unwrapped payload — no { data, _meta } wrapper to reach through.
Using Python
from orsa import Orsa
client = Orsa(api_key="YOUR_API_KEY")
brand = client.brand.retrieve(domain="stripe.com")
print(brand.title) # "Stripe"
print(brand.description)
print(brand.colors)4. Try More Endpoints
Scrape a page
mode defaults to markdown. Pass 'html' or 'text' for those.
const page = await client.web.scrape({
url: 'https://stripe.com/pricing',
});
console.log(page.markdown); // Clean markdown content
const raw = await client.web.scrape({
url: 'https://stripe.com/pricing',
mode: 'html',
});
console.log(raw.html);AI-powered data extraction
result is a string. Ask for JSON explicitly if you want structured data.
const ans = await client.ai.query({
domain: 'stripe.com',
dataToExtract: 'Return the pricing plans as a JSON array.',
});
console.log(ans.result);
console.log(ans.usage.input_tokens);Screenshot
import { writeFileSync } from 'node:fs';
const shot = await client.brand.screenshot({ domain: 'stripe.com' });
writeFileSync('stripe.png', Buffer.from(shot.image_base64, 'base64'));The screenshot is returned inline as base64. Custom viewports, full-page captures, and dark mode are not currently supported — the route renders the homepage at desktop resolution.
Next Steps
- Authentication — API key management
- Error Handling — the four
Orsa*Errorclasses - Core Concepts — credits, caching, rate limits
- TypeScript SDK — full method reference + a local playground app
- API Reference — endpoint-level documentation