| Endpoint | Webhook usage |
|---|---|
| Enrich Companies (Batch) | All results delivered via webhook |
| Enrich People (Batch) | All results delivered via webhook |
| Reveal Emails | All results delivered via webhook |
| Reveal Phones | All results delivered via webhook |
Search People (revealEmails) |
Email reveal results delivered via webhook |
Enrich Person (revealEmails, revealPhones) |
Reveal results delivered via webhook |
webhookUrl in your API requestHTTP 200 with {"status": "in progress"} — this is an acknowledgment, not the resultPOST request to your webhookUrl with Content-Type: application/json2xx status code to acknowledge receiptYour webhook receiver must:
2xx HTTP status code (e.g., 200 OK) within a reasonable timeoutIf your endpoint returns a non-2xx status or times out, Ocean.io will retry with exponential backoff.
Results are keyed by the IDs you provided in companyDataMapping or peopleDataMapping:
{
"results": {
"your-id-001": {
"status": "found",
"company": { "...enriched company object..." }
},
"your-id-002": {
"status": "not_found",
"company": null
},
"your-id-003": {
"status": "triggered",
"company": null
}
}
}For Enrich People, company is replaced by person.
| Result status | Meaning |
|---|---|
found |
Successfully matched and enriched |
not_found |
No match found in Ocean.io's database |
triggered |
Domain was not in database — crawling initiated. Re-enrich in a few minutes. |
{
"results": [
{
"personId": "abc123",
"email": {
"address": "[email protected]",
"status": "verified"
}
},
{
"personId": "def456",
"email": {
"address": null,
"status": "notFound"
}
}
]
}{
"results": [
{
"personId": "abc123",
"phone": {
"numbers": ["+4512345678"],
"status": "verified"
}
}
]
}| Status | Meaning | Credit charged? |
|---|---|---|
verified |
Confirmed deliverable via SMTP verification | Yes — 1 credit (v3) or 1 email credit (v2/v1) |
guessed |
High-confidence pattern match, not SMTP-verified | Yes — 1 credit (v3) or 1 email credit (v2/v1) |
catchAll |
Domain accepts all addresses — deliverability unknown | Yes — 1 credit (v3) or 1 email credit (v2/v1) |
notFound |
Not found or verification not possible | No |
The same payload may be delivered more than once if your endpoint doesn't acknowledge in time. Deduplicate on the record IDs in the payload and return 2xx as fast as possible — offload heavy processing to a background queue.
Ocean.io sends from a fixed set of IP addresses — contact support for the current range if you want to allowlist them.
Alternatively, include a secret token in your webhookUrl:
https://yourapp.com/webhooks/ocean?secret=MY_SECRET_TOKENValidate this token in your webhook handler before processing any payload.
| Operation | Typical delivery time |
|---|---|
| Reveal Emails (small batch) | 1–3 minutes |
| Reveal Emails (500 IDs) | 2–10 minutes |
| Enrich Companies/People (small batch) | 1–5 minutes |
| Enrich Companies/People (10,000 records) | 10–30 minutes |
Times vary with server load and domain accessibility.