Gather facts from this directory’s listings’ own websites
Reads each listing’s website and writes what it finds into typed attributes prefixed by source — site_title, site_description, site_og_image, site_headings, site_text_excerpt and the rest. Intended as seed material for writing your own copy, not as text to publish: it is what the business says about itself, gathered verbatim.
The full raw result is also stored as a SourceSnapshot on the listing, so a description written from it can cite the evidence it came from.
Asynchronous. The response reports what was queued, not what was gathered; poll GET .../research for coverage.
Send declareFields: true on your first call. Research only writes into fields the directory has declared a template for. Without them the sweep succeeds and writes nothing, which is the one confusing failure mode this endpoint has.
Only listings with a resolvable website are eligible — website, url, homepage or organizerWebsite in canonicalFields, with a series_of child inheriting its parent series’ site. listingsWithoutUrl is the honest gap: no number of runs will help those.
Refreshing. Listings read within staleAfterDays (default 90) are skipped, so running this on a schedule re-reads only what has aged. Fields on templates marked { derived: true } are updated in place; anything else is filled only when blank, so a description someone wrote by hand is never overwritten by a sweep.
Respects enrichmentPolicy.probe === false, which short-circuits before anything is queued.
Request
- Base URL: https://api.epicdirectories.com
- URL: https://api.epicdirectories.com/public/v1/directories/{directory}/research
- Auth: API key in header x-api-key
Path parameters
Headers
Optional. Send a unique key per logical operation to make retries safe. 1-256 characters, and only letters, digits, - and _ — colons and other separators are rejected with 400. A retry with the same key replays the original response (status + body) instead of re-executing. Cached for 24h. Reusing a key with a different request body returns 409 — note that a timestamp in the body (e.g. fetchedAt) turns an otherwise-stable key into a permanent 409, so either omit it (snapshots default it server-side) or fold a payload digest into the key. Skipped on 5xx responses (transient errors should be retried fresh).
API Key for authentication
Request body
Example request
{
"listingSlugs": [
"acme-digital",
"bizapedia"
]
}Response
Research queued; body reports the counts per source
Changes
No recorded changes to this operation across all 1 revision of this API.