Organization .resolve
Turn one clue, a visitor’s IP address, an email address or a company name, into the one company it belongs to.
- Price
- Free
- Success rate
- 99.97% of 419,320 calls
- Freshness
- Fresh for 30 days
- Emits
Organization.resolved- Capability
- Enrichment
POST https: //api.sb/ {your-domain}/ organizations/ resolve
Options and prices
Inputs
| Name | Type | Meaning |
|---|---|---|
ip | string | A visitor’s IP address. Pass exactly one of ip, email, name or hostname. |
email | string | An email address; its domain is matched. A free-mail address returns organization: at $0. |
name | string | A company name as a person typed it. |
hostname | Hostname | A domain, to find the saved Organization it belongs to. |
save | boolean | Create the Organization in your records when none matches. Saving is a write, so it follows the call’s Mode. Default false. |
Outputs
| Field | Type | What null means |
|---|---|---|
organization | Organization | null | No company matched the clue: a residential or mobile IP, a free-mail address, or an unknown name. Free. |
organization.confidence | number, in score 0 to 1 | Never null when organization is set. |
matchedOn | 'ip' | 'email' | 'name' | 'hostname' | Never null: the clue that matched. |
created | boolean | Never null: true only when save created the Organization. |
observedAt | string, in ISO 8601 | Never null. |
method | Observed['method'] | Never null. An IP match reads 'estimated'. |
Read the result
| Field | Value | What it means | What to do |
|---|---|---|---|
organization | null on an IP | Most visits from home and mobile networks resolve to no company. | Read the share of company visits per page, not per visit; it costs nothing. (the single IP route) |
confidence | Under 0.6 on an IP | A shared office or a co-working network. | Treat it as a lead to check, never as a person to write to. (our planning number) |
organization.hostname | A company that fits your customer | Someone there read your pages. | Find the person at it with Prospect.find, then write within a day. (the visitor rule in Find customers) |
Effects
- Action class
None: it reads, so no approval rule names it
- Modes
try: Runs the read and returns real rows; nothing is saved and nothing is billed.send: Returns a pending Action at once; its Event carries the rows when the read finishes.do: Waits for the read and returns the rows, billed per result.
- Idempotency
The same
Idempotency-Keywith the same input replays the first answer at $0; with other input it returns 409.- Saved or shared
Nothing unless
saveis passed. A company match is shared across startups; the IP address and the visit stay yours.- Emits
Organization.resolvedwith{ organization,matchedOn, created } - Performed by
- Price
Free. Free: a name or a company email, an IP address that matches no company. 300 company visits in a month: 300 × 1¢ a match is about $3.00.
- Reliability
The first route succeeds 99.97% of 419,320 calls. If it fails, the call refuses with
sources-busyand nothing is spent.- Freshness
A reading younger than 30 days returns at $0. Readings are shared across startups for the same subject and locale.
- Batch and pages
Up to 1 clue a call. It answers in one response.
- Rate
The shared rate rules: 10 calls a second per key, and an array input counts as one call.
Refuses when
This call has no refusals of its own. Every data call can also meet the shared data-call refusals: filter-unsupported, input-missing, limit-exceeded, max-cost, rate-limited, sources-busy, venue-unsupported.
When it waits
Returns in one response; nothing waits.
Example
Which company is behind the visit from 203.0.113.42? Spend up to 1¢. To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.
Test values
A sk_test_ key answers these the same way every time, at $0 (every test value).
| Test value | Always returns | What it is for |
|---|---|---|
maxCost: | Refuses with max-cost | Any priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap. |
rate-limited.test | Refuses with rate-limited | Any call naming this hostname answers 429 with Retry-After, so your retry logic runs. |
sources-busy.test | Refuses with sources-busy | Any call naming this hostname answers 503 as if every route were busy, and nothing is spent. |
Used by
- Workflows: Inbound routing · Who is visiting
- Jobs: Convert visitors · Find your first customers