# Octen — Orthogonal API > Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance. > Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover) Real-time search infrastructure for AI agents and apps: web, broad, news and business search, URL content extraction, and text and multimodal embeddings. **Verified:** no ## Access **Run API:** `POST https://api.orthogonal.com/v1/run` **Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY` Get an API key at https://orthogonal.com/dashboard/settings/api-keys Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "", "data": { ... } }`. ## Endpoints ### Web Search Search the live web for ranked results with model-ready highlights and optional full page content. `POST /search` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/search | Field | Type | Required | Description | |-------|------|----------|-------------| | `query` | string | Yes | Search query (max 500 chars). Supports site: and -site: operators. | | `count` | integer | No | Number of results (1-100, default 5). | | `include_domains` | array | No | Domains to restrict results to. | | `exclude_domains` | array | No | Domains to exclude. | | `time_basis` | string | No | auto \| published \| crawled (default auto). | | `time_range` | string | No | day \| week \| month \| year. | | `start_time` | string | No | ISO 8601 start time. | | `end_time` | string | No | ISO 8601 end time. | | `language` | array | No | ISO 639-1 language codes, e.g. ["en"]. | | `highlight` | object | No | {enable: bool (default true), max_tokens: 100-20000}. | | `full_content` | object | No | {enable: bool (default false), max_tokens: 100-100000}. Return full page content for results. | | `include_text` | array | No | Strings that must appear (max 5). | | `exclude_text` | array | No | Strings that must not appear (max 5). | | `format` | string | No | markdown \| text. | | `safesearch` | string | No | off \| strict (default strict). | | `include_images` | boolean | No | Include images per result. | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/search","body":{"query":"","count":"","include_domains":"","exclude_domains":"","time_basis":"","time_range":"","start_time":"","end_time":"","language":"","highlight":"","full_content":"","include_text":"","exclude_text":"","format":"","safesearch":"","include_images":""}}' ``` ### Broad Search Break one question into up to 30 sub-queries, search them concurrently, and return results grouped by sub-query. `POST /broad-search` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/broad-search | Field | Type | Required | Description | |-------|------|----------|-------------| | `query` | string | Yes | Original question (max 500 chars). | | `max_queries` | integer | No | Upper bound on sub-queries (1-30, default 5). | | `search_options` | object | No | Web Search options applied to each sub-query (count, domains, time filters, language, highlight, full_content, format, safesearch, include_images). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/broad-search","body":{"query":"","max_queries":"","search_options":""}}' ``` ### News Search Search real-time news, with related articles clustered into subjects and events. `POST /news-search` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/news-search | Field | Type | Required | Description | |-------|------|----------|-------------| | `query` | string | Yes | News query (max 500 chars). | | `count` | integer | No | Number of results (1-100, default 5). | | `include_domains` | array | No | Domains to restrict results to. | | `exclude_domains` | array | No | Domains to exclude. | | `time_basis` | string | No | auto \| published \| crawled (default auto). | | `time_range` | string | No | day \| week \| month \| year. | | `start_time` | string | No | ISO 8601 start time. | | `end_time` | string | No | ISO 8601 end time. | | `language` | array | No | ISO 639-1 language codes, e.g. ["en"]. | | `highlight` | object | No | {enable: bool (default true), max_tokens: 100-20000}. | | `full_content` | object | No | {enable: bool (default false), max_tokens: 100-100000}. Return full page content for results. | | `subjects` | object | No | {enable: bool (default true), count: 1-5, max_sub_news: 1-20}. | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/news-search","body":{"query":"","count":"","include_domains":"","exclude_domains":"","time_basis":"","time_range":"","start_time":"","end_time":"","language":"","highlight":"","full_content":"","subjects":""}}' ``` ### Business Search Search companies and people, returning entity cards with key people, career history and recent activity alongside ranked web results. `POST /business-search` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/business-search | Field | Type | Required | Description | |-------|------|----------|-------------| | `query` | string | Yes | Company or person query (max 500 chars). | | `count` | integer | No | Number of results (1-100, default 5). | | `include_domains` | array | No | Domains to restrict results to. | | `exclude_domains` | array | No | Domains to exclude. | | `time_basis` | string | No | auto \| published \| crawled (default auto). | | `time_range` | string | No | day \| week \| month \| year. | | `start_time` | string | No | ISO 8601 start time. | | `end_time` | string | No | ISO 8601 end time. | | `language` | array | No | ISO 639-1 language codes, e.g. ["en"]. | | `highlight` | object | No | {enable: bool (default true), max_tokens: 100-20000}. | | `full_content` | object | No | {enable: bool (default false), max_tokens: 100-100000}. Return full page content for results. | | `entities` | object | No | {enable: bool (default true), count: 1-20, max_activities: 1-20}. | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/business-search","body":{"query":"","count":"","include_domains":"","exclude_domains":"","time_basis":"","time_range":"","start_time":"","end_time":"","language":"","highlight":"","full_content":"","entities":""}}' ``` ### Extract Turn up to 20 URLs into clean, LLM-ready markdown or text, with optional query-focused highlights, links and media. `POST /extract` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/extract | Field | Type | Required | Description | |-------|------|----------|-------------| | `urls` | array | Yes | URLs to extract (max 20, each max 2048 chars). | | `mode` | string | No | standard (default, prioritizes speed) \| advanced (prioritizes success on hard-to-reach pages) \| auto (picks one per URL). advanced and auto can take longer, so raise timeout. | | `query` | string | No | Intent keywords for highlights (max 500 chars). | | `max_age_seconds` | integer | No | Max cache age, 300-31536000 (default 86400). | | `format` | string | No | markdown \| text. | | `timeout` | integer | No | Per-URL timeout seconds, 1-60. | | `include_images` | boolean | No | Return image URLs. | | `include_videos` | boolean | No | Return video URLs. | | `include_audio` | boolean | No | Return audio URLs. | | `include_links` | object | No | {scope: prefer_internal \| prefer_external, max_links: 1-1000}. | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/extract","body":{"urls":"","mode":"","query":"","max_age_seconds":"","format":"","timeout":"","include_images":"","include_videos":"","include_audio":"","include_links":""}}' ``` ### Text Embedding (octen-embedding-0.6b) Convert up to 1000 texts into semantic vectors with octen-embedding-0.6b (max dimension 1024), optimized for high volume and low cost. The model is fixed for this endpoint. `POST /embedding/octen-embedding-0.6b` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/embedding | Field | Type | Required | Description | |-------|------|----------|-------------| | `input` | array | Yes | Texts to embed (max 1000, each max 10000 chars, 2MB body). | | `dimension` | integer | No | Output dimension (default 1024). | | `input_type` | string | No | query \| document (retrieval prompts). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/embedding/octen-embedding-0.6b","body":{"input":"","dimension":"","input_type":""}}' ``` ### Text Embedding (octen-embedding-4b) Convert up to 1000 texts into semantic vectors with octen-embedding-4b (max dimension 2560), balancing quality and cost. The model is fixed for this endpoint. `POST /embedding/octen-embedding-4b` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/embedding | Field | Type | Required | Description | |-------|------|----------|-------------| | `input` | array | Yes | Texts to embed (max 1000, each max 10000 chars, 2MB body). | | `dimension` | integer | No | Output dimension (default 2560). | | `input_type` | string | No | query \| document (retrieval prompts). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/embedding/octen-embedding-4b","body":{"input":"","dimension":"","input_type":""}}' ``` ### Text Embedding (octen-embedding-8b) Convert up to 1000 texts into semantic vectors with octen-embedding-8b (max dimension 4096), Octen's most accurate text embedding model. The model is fixed for this endpoint. `POST /embedding/octen-embedding-8b` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/embedding | Field | Type | Required | Description | |-------|------|----------|-------------| | `input` | array | Yes | Texts to embed (max 1000, each max 10000 chars, 2MB body). | | `dimension` | integer | No | Output dimension (default 4096). | | `input_type` | string | No | query \| document (retrieval prompts). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/embedding/octen-embedding-8b","body":{"input":"","dimension":"","input_type":""}}' ``` ### VL Embedding (octen-vl-embedding) Encode text, up to 5 images and one video into a shared vector space with octen-vl-embedding (max dimension 2048), as one fused vector or one vector per element. The model is fixed for this endpoint. `POST /vl-embedding/octen-vl-embedding` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/vl-embedding | Field | Type | Required | Description | |-------|------|----------|-------------| | `input` | object | Yes | {contents: [{text}\|{image: https URL or data:image/...;base64,... URI, max 5MB}\|{video: https URL, max 50MB}]}. Max 20 elements, 5 images, 1 video; text max 10,000 characters total. | | `enable_fusion` | boolean | No | Fuse all contents into one vector. | | `dimension` | integer | No | Output dimension. | | `fps` | number | No | Video frames per second, 0-1 (max 64 frames). | | `instruct` | string | No | Task instruction (counts toward text tokens). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/vl-embedding/octen-vl-embedding","body":{"input":"","enable_fusion":"","dimension":"","fps":"","instruct":""}}' ``` ### VL Embedding (octen-vl-embedding-large) Encode text, up to 5 images and one video into a shared vector space with octen-vl-embedding-large (max dimension 4096), as one fused vector or one vector per element. The model is fixed for this endpoint. `POST /vl-embedding/octen-vl-embedding-large` **Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling. **Docs:** https://docs.octen.ai/api-reference/vl-embedding | Field | Type | Required | Description | |-------|------|----------|-------------| | `input` | object | Yes | {contents: [{text}\|{image: https URL or data:image/...;base64,... URI, max 5MB}\|{video: https URL, max 50MB}]}. Max 20 elements, 5 images, 1 video; text max 10,000 characters total. | | `enable_fusion` | boolean | No | Fuse all contents into one vector. | | `dimension` | integer | No | Output dimension. | | `fps` | number | No | Video frames per second, 0-1 (max 64 frames). | | `instruct` | string | No | Task instruction (counts toward text tokens). | ```bash curl -X POST 'https://api.orthogonal.com/v1/run' \ -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \ -H 'Content-Type: application/json' \ -d '{"api":"octen","path":"/vl-embedding/octen-vl-embedding-large","body":{"input":"","enable_fusion":"","dimension":"","fps":"","instruct":""}}' ``` --- Full details and an interactive quickstart: https://orthogonal.com/discover/octen