Skip to main content

1. Submit a company and persona

Every job uses the single target_people operation and an explicit saved persona slug.
The response is 202 { "job_id": "…", "status": "processing" }. Missing persona returns 400 persona_required; an unknown slug returns 400 persona_not_found. Idempotency-Key is optional but recommended for every submission. Reusing the same key and request under one API client returns the original job; reusing it for a different request returns 409 idempotency_conflict. Keys may contain 1–128 characters.

2. Poll the same job

While work is delayed, status remains processing:
The immutable final result is inline:
Re-polling returns the same published result version and never charges again.

Webhook instead of polling

Add a public HTTPS callback_url to the submit body. A saved dashboard webhook is HMAC-signed; all deliveries include a stable X-Bossradar-Event-Id. Failed deliveries retry from a durable outbox with jitter for up to 24 hours. Receivers should still be idempotent by event ID.

Cancel a job

POST /v1/jobs/{job_id}/cancel stops further work and marks the job cancelled (idempotent). Cancelling is always free and immediately frees your concurrency slot. A job that already finished is returned unchanged — a paid result cannot be cancelled.

Job outcomes

Public statuses are processing, done, not_found, no_employees, no_people_found, too_large, failed, and cancelled. Every terminal free outcome returns credits_charged: 0; a completed metered result, including zero persona matches, returns 1. Unmetered plans report the actual debit, 0. The size gate remains over 100 employees for non-exempt plans. pro, internal, unlimited, and enterprise bypass it.

Personas — full guide

Manage targets and learn about the immutable Owners & founders system persona.