# Orthogonal Person Search by Company

> Orthogonal Person Search by Company is a paid API for AI agents from x402.orthogonal.com, paid per call via x402, $0.36285/call, status unknown (last checked 2026-09-14).

Starts an asynchronous person search filtered by company name, role, geography, and person name, returning a requestId for polling results.

## Facts

- Endpoint: POST https://x402.orthogonal.com/nyne/person/search
- Price: $0.36285/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/orthogonal-person-search-by-company-51c62ecc
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TPG2iWPuKQIum5qsVTGhf

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability orthogonal-person-search-by-company-51c62ecc -d '<json body>'
```

Example prompt: Find me people at Stripe who work as engineers in San Francisco — search by company 'Stripe', role 'engineer', and location 'San Francisco'.

## When to prefer this

Choose this endpoint when you need to asynchronously search for people across one or more filters (company, role, geography, name) and can tolerate a polling-based retrieval pattern. It is especially well-suited for paginated bulk searches where you want to avoid re-billing on continuation pages by passing a parentRequestId. Prefer it over synchronous person lookup endpoints when result sets may be large or latency tolerance is higher.

## Known failure modes

- Invalid or missing required search parameters returns a validation error
- If parentRequestId is provided but search parameters differ from the original request, a new billable search is started
- Polling with an expired or invalid requestId may return a not-found error
- Overly broad searches with no filters may result in very large result sets or timeouts
- Network errors or service unavailability return standard HTTP error codes

## How this service works

Start async person search by company name, role, geography, and person name. Returns requestId for polling. Pagination billing: call the first page normally and save billing.requestId from the Orthogonal /v1/run response. For later offset or cursor pages of the same search, pass parentRequestId with unchanged search parameters. Valid continuation pages still get their own request IDs and quoted price, but are charged 0. Changing filters starts a new billable search.

## Output

Returns a requestId that the caller can use to poll for the completed search results, along with a billing requestId for managing paginated continuation requests at zero additional cost when search parameters remain unchanged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "properties": {
      "type": {
       "type": "string",
       "description": "Search tier: light (fastest), medium, premium (best quality). Default: premium"
      },
      "limit": {
       "type": "integer",
       "description": "Max results per request (default: 10, max: 100)"
      },
      "query": {
       "type": "string",
       "description": "Natural language search query (max 1000 chars)"
      },
      "cursor": {
       "type": "string",
       "description": "Pagination token from a previous response. For continuation billing, keep search filters unchanged and pass top-level parentRequestId from the first Orthogonal /v1/run response."
      },
      "offset": {
       "type": "integer",
       "description": "Starting position in results (default: 0, max: 999). For later pages of the same logical search, keep search filters unchanged and pass top-level parentRequestId from the first Orthogonal /v1/run response."
      },
      "insights": {
       "type": "boolean",
       "description": "Include AI-generated relevance insights (default: false, not available for light)"
      },
      "force_new": {
       "type": "boolean",
       "description": "Force fresh search even if cached (default: false)"
      },
      "request_id": {
       "type": "string",
       "description": "Nyne request ID to continue fetching from the same search. For Orthogonal continuation billing, also pass top-level parentRequestId from the first /v1/run response."
      },
      "show_emails": {
       "type": "boolean",
       "description": "Include email addresses in results (default: false)"
      },
      "callback_url": {
       "type": "string",
       "description": "URL to receive results via webhook"
      },
      "custom_filters": {
       "type": "object",
       "description": "Structured filters (locations, industries, titles, etc.)"
      },
      "high_freshness": {
       "type": "boolean",
       "description": "Prioritize recently updated profiles (default: false, not available for light)"
      },
      "require_emails": {
       "type": "boolean",
       "description": "Only return profiles with emails (default: false)"
      },
      "profile_scoring
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/orthogonal-person-search-by-company-51c62ecc/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.orthogonal.com](https://www.zero.xyz/host/x402.orthogonal.com/llms.txt)
