Hydrant API
Enrichments

Enrich a company

Starts an enrichment of the company a domain or a name leads to: every source is asked again, and the record worked out from what they say. Two requests for one company at once share the work. It answers once the enrichment has ended, if that's within `wait_seconds` (200), or else then (202): follow `status_url`, or give a `webhook_url`.

POST
/v1/enrichments

Starts an enrichment of the company a domain or a name leads to: every source is asked again, and the record worked out from what they say. Two requests for one company at once share the work. It answers once the enrichment has ended, if that's within wait_seconds (200), or else then (202): follow status_url, or give a webhook_url.

Authorization

ApiKey
headerAuthorizationBearer <token>

An API key from the dashboard: Authorization: Bearer hyd_live_….

Query Parameters

include?|

evidence adds, to each value of the record, the statements backing it.

Header Parameters

Idempotency-Key?|

Any string of up to 255 printable ASCII characters, unique to the request. A retry with the key gets the enrichment the first request started, running or ended, rather than starting another; with another body, it's a 409.

Request Body

application/json
  1. body

A company to enrich, by its domain or by its name: one of the two.

domain?|

The company's website's domain or hostname.

name?|

The company's name. One that could be several companies ends the enrichment with name_ambiguous and the candidates: ask again by the domain of the one you mean.

wait_seconds?Wait Seconds

How long to wait for the result before answering: 200 with it if it comes in time, 202 if not. 0 answers 202 at once.

Range0 <= value <= 30
Default0
webhook_url?|

An https URL to post to once it has ended, signed as the Standard Webhooks spec has it (webhook-id, webhook-timestamp, webhook-signature) with the workspace's own signing secret, which the dashboard's Webhooks page makes. While a rotated secret's overlap lasts, the signature header carries one signature for each. A workspace with no secret yet is refused, 409 webhook_secret_missing. A delivery that isn't answered with a 2xx is retried for a day.

mode?Mode

full fetches every field again; refresh only the fields named, from the sources that give them.

Default"full"
Value in"full""refresh"
fields?array<string>|

With mode: refresh, the fields to fetch again: hq_location, industry, employee_band, founded_year, linkedin_url, name, legal_name, registered_address, incorporated_on, company_status, incorporated_in, listing, description, founders, branches, logos, pricing_plans.

Response Body

It ended within wait_seconds. A test key's always has.

application/json
  1. response

An enrichment: one request to enrich a company, while it runs and once it has ended. Two requests for one company at once are two enrichments that share the work.

id*Id

Its id, to GET /v1/enrichments/{id} by.

status*Status

succeeded with the company's record in company; failed with why in error.

Value in"running""succeeded""failed"
stage*|

Where it is: finding which company the domain or name is (identity), asking the sources (adapters), working out the record (resolve), storing it (persist), or done. Null while it runs if it couldn't be read just then.

input*

What was asked for: a domain, without its scheme or www., or a name, its spaces collapsed.

mode*Mode
Value in"full""refresh"
fields*array<string>

With mode: refresh, the fields asked for.

domain*|

The company's domain, the one it uses now, once it's known.

entity_id*|

Our id for the company, once it's known.

sources*array<>

The sources asked, and how far each is. Empty while it runs if it couldn't be read just then.

created_at*Created At
Formatdate-time
finished_at*|null
estimated_completion_at*|

While it runs, when it should end, from how long each source typically takes. A slow website can take minutes longer.

status_url*Status Url

Where to GET it: /v1/enrichments/{id}.

company*|

Once it has succeeded, the company's record, as GET /v1/companies/{domain} gives it then.

error*|

Once it has failed, why: name_ambiguous (see candidates), name_not_found, invalid_input, or enrichment_failed (on our side: retry).

candidates*array<>

With name_ambiguous, the companies the name could be, the best first.

webhook_status*|

With a webhook_url, once it has ended: whether the receiver took the webhook (a 2xx), is still being tried, or wasn't reached within a day.

Example Request
curl -X POST 'https://api.hydrantapi.com/v1/enrichments' \  -H 'Content-Type: application/json' \  -d '{  "domain": "hvidbjergbank.dk",  "wait_seconds": 20,  "webhook_url": "https://example.com/hooks/hydrant"}'
Example Response
{  "id": "enr_iduv6lacyirgdrk7topihnvgsq",  "status": "succeeded",  "stage": "done",  "input": {    "domain": "hvidbjergbank.dk",    "name": null  },  "mode": "full",  "fields": [],  "domain": "hvidbjergbank.dk",  "entity_id": "bb80e7e2-dd05-48f2-ab65-19f73b16716a",  "sources": [    {      "source": "website",      "status": "succeeded"    },    {      "source": "wikidata",      "status": "succeeded"    },    {      "source": "gleif",      "status": "succeeded"    },    {      "source": "ares",      "status": "succeeded"    },    {      "source": "brreg",      "status": "succeeded"    },    {      "source": "companies-house",      "status": "succeeded"    },    {      "source": "estimate",      "status": "succeeded"    },    {      "source": "sec-edgar",      "status": "succeeded"    },    {      "source": "sirene",      "status": "succeeded"    },    {      "source": "ytj",      "status": "succeeded"    }  ],  "created_at": "2026-10-05T21:59:52.455855Z",  "finished_at": "2026-10-05T22:00:22.364256Z",  "estimated_completion_at": null,  "status_url": "/v1/enrichments/enr_iduv6lacyirgdrk7topihnvgsq",  "company": {    "domain": "hvidbjergbank.dk",    "entity_id": "bb80e7e2-dd05-48f2-ab65-19f73b16716a",    "resolved_at": "2026-10-05T22:00:21.849927Z",    "hq_location": {      "value": {        "city": "Hvidbjerg",        "region": null,        "country": "DK"      },      "confidence": 0.5132,      "as_of": "2026-10-05T22:00:11Z",      "sources": [        "wikidata",        "website"      ]    },    "industry": {      "value": {        "code": 41,        "label": "Banking"      },      "confidence": 0.496,      "as_of": "2026-10-05T21:59:58Z",      "sources": [        "website"      ]    },    "industries": [      {        "value": {          "code": 41,          "label": "Banking"        },        "confidence": 0.496,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      },      {        "value": {          "code": 43,          "label": "Financial Services"        },        "confidence": 0.1765,        "as_of": "2026-09-30T19:57:22.004102Z",        "sources": [          "wikidata"        ]      }    ],    "employee_band": {      "value": "51-200",      "confidence": 0.6182,      "as_of": "2026-10-05T22:00:21.470810Z",      "sources": [        "estimate"      ]    },    "founded_year": {      "value": 1912,      "confidence": 0.57,      "as_of": "2026-09-30T19:57:22.004102Z",      "sources": [        "wikidata"      ]    },    "linkedin_url": null,    "name": {      "value": "Hvidbjerg Bank",      "confidence": 0.922,      "as_of": "2026-10-05T21:59:58Z",      "sources": [        "wikidata",        "website"      ]    },    "legal_name": {      "value": "HVIDBJERG BANK A/S",      "confidence": 0.9411,      "as_of": "2026-09-30T19:57:22.004102Z",      "sources": [        "gleif",        "wikidata"      ]    },    "registered_address": {      "value": {        "city": "Thyholm",        "region": "DK-82",        "country": "DK"      },      "confidence": 0.8636,      "as_of": "2026-07-28T09:33:00Z",      "sources": [        "gleif"      ]    },    "incorporated_on": null,    "company_status": null,    "incorporated_in": {      "value": "DK",      "confidence": 0.7727,      "as_of": "2026-07-28T09:33:00Z",      "sources": [        "gleif"      ]    },    "listing": null,    "description": {      "value": "Hvidbjerg Bank provides banking advice and financial products to private customers and businesses.",      "confidence": 0.56,      "as_of": "2026-10-05T21:59:58Z",      "sources": [        "website"      ]    },    "founders": [],    "branches": [      {        "value": {          "city": "Holstebro",          "region": null,          "country": "DK"        },        "confidence": 0.525,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      },      {        "value": {          "city": "Hurup",          "region": null,          "country": "DK"        },        "confidence": 0.525,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      },      {        "value": {          "city": "Struer",          "region": null,          "country": "DK"        },        "confidence": 0.525,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      },      {        "value": {          "city": "Viborg",          "region": null,          "country": "DK"        },        "confidence": 0.525,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      }    ],    "logos": [      {        "value": {          "url": "https://logos.example.com/188183d5d65135c066ad715ea9ca60472b3990abacff56944864ab6ba4ee214c.png",          "format": "png",          "width": 72,          "height": 55,          "svg_url": null,          "variant": "icon",          "color": "#ffffff"        },        "confidence": 0.68,        "as_of": "2026-10-05T21:59:58Z",        "sources": [          "website"        ]      }    ],    "pricing_plans": []  },  "error": null,  "candidates": [],  "webhook_status": null}