Skip to main content
This guide walks through the minimal API flow using cURL.
You need a valid bearer token first. See Authentication.

1) Check service health

2) Validate your token

2.1) Optional: test Radar (free plan)

Radar access is free, but still requires an authenticated API key.
Save the returned search.id for the next calls.

Optional: run selected modules only

If modules is omitted, Osintly uses the default module set for the selected search type.

4) Stream progress (SSE)

You receive incremental events while the search is running. Concrete output example:
Concrete BYOK stream output example:
If modules are sharded across runners, you can also receive search.progress messages such as:

5) Fetch search state

6) Fetch final structured results

7) Fetch leak source payloads

8) Optional: receive results by webhook

Provide delivery.webhook.url (and optionally delivery.webhook.secret) when creating the search:
When the search completes, your endpoint receives a JSON payload with:
  • searchId
  • status (finished or error)
  • finishedAt
  • search metadata (id, value, type, options, created_at)
  • summary counts
  • links to retrieve state, results, BYOK details, and leaks
The webhook is a lightweight completion notification. Use the returned links to fetch the full normalized payloads from the API. Full payload details: Webhooks After you have fetched and stored the data you need, delete completed searches you no longer need:
Use this only after the search is terminal. Deletion requests are all-or-nothing and support up to 100 IDs per call. Cleanup guidance: Search Retention

Rate limits and usage

Use GET /usage to read current global and daily usage windows.
If you receive 429, respect Retry-After and X-RateLimit-Reset headers before retrying.

Terms and ethics

Next steps

  • Explore the OpenAPI endpoint docs in the Endpoints group
  • Read Domains for type values and request patterns