Skip to content

Documentation

Getting started

Create an API key under API in the app. Keys look like ey_… and are sent as Authorization: Bearer ey_… (or X-Api-Key).

Enrich a company

curl -X POST https://enriched.yakware.com/api/v1/enrich/company \
  -H "Authorization: Bearer $ENRICHEDYAK_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"domain": "northwind-electric.com"}'

If we checked the company in the last 30 days (or max_age_days) you get 200 with the profile, for 1 credit. Otherwise you get 202 with a request id; poll GET /api/v1/enrich/requests/{id} until its status is done. A fresh crawl costs 2 credits, charged only when it finds at least one accepted fact. Pass "max_age_days": 0 to force a fresh crawl.

Read a profile with provenance

curl "https://enriched.yakware.com/api/v1/companies/{id}?include=provenance&min_confidence=0.7" \
  -H "Authorization: Bearer $ENRICHEDYAK_KEY"

Facts are grouped by predicate — email, phone, address, person, title, technology, industry, product, social_profile and the company scalars. Each carries confidence, status, fact_kind (observed, authoritative, inferred, estimate) and, with include=provenance, its evidence.

How confidence works

For each piece of evidence, s = source authority × extraction confidence × recency, where recency halves every half-life (contacts 180 days, people and titles 120, technologies 90, company facts 365).

Evidence is combined as independent support, 1 − Π(1 − w·s), with the best page per source domain at full weight and further pages from the same domain at half. Single-valued facts (legal name, founded year, a person's title) are reduced by half the support of the strongest rival value.

Confidence Status Shown
≥ 0.70 accepted by default
0.40 – 0.70 candidate marked as low confidence
< 0.40 candidate only with a lower min_confidence

Search

curl -X POST https://enriched.yakware.com/api/v1/search \
  -H "Authorization: Bearer $ENRICHEDYAK_KEY" -H "Content-Type: application/json" \
  -d '{"query": "electrical contractors in Texas using Procore"}'

The response echoes the filters the query became. Send filters directly to skip parsing.

Webhooks

Watchlists with a webhook URL (Growth and Scale) receive a POST per change event, signed:

X-EnrichedYak-Signature: t=1758550000,v1=<hex HMAC-SHA256 of "t.body">

Recompute the HMAC with your watchlist's secret over "<t>.<raw body>", compare in constant time, and reject timestamps older than five minutes.

Reference

The full reference is at /docs/api and as OpenAPI 3.1 at /docs/openapi.yaml.