EpicDirectories Public API

The public API from EpicDirectories — 46 operation(s) for public.

Operations 74

GET /public/v1/directories/{directory} Get directory configuration and schema #
PATCH /public/v1/directories/{directory} Update directory configuration #
GET /public/v1/me Describe this API key #
POST /public/v1/directories/{directory}/taxonomies Create a taxonomy #
GET /public/v1/directories/{directory}/taxonomies List this directory's taxonomies #
POST /public/v1/directories/{directory}/taxonomies/{taxonomy}/terms Create a taxonomy term #
GET /public/v1/directories/{directory}/taxonomies/{taxonomy}/terms List a taxonomy's terms, with a listing count each #
GET /public/v1/directories/{directory}/turnstile Which Turnstile widget verifies this directory's public forms #
POST /public/v1/directories/{directory}/turnstile/provision Create or reconcile this directory's own Turnstile widget #
POST /public/v1/directories/{directory}/attribute-templates Create an attribute template #
GET /public/v1/directories/{directory}/attribute-templates List attribute templates #
GET /public/v1/directories/{directory}/attribute-templates/{template} Get one attribute template #
PATCH /public/v1/directories/{directory}/attribute-templates/{template} Update an attribute template #
DELETE /public/v1/directories/{directory}/attribute-templates/{template} Delete an attribute template #
DELETE /public/v1/directories/{directory}/listings/{listingType}/{listingSlug} Archive a listing (soft delete) #
GET /public/v1/directories/{directory}/listings/{listingType}/{listingSlug} Get a listing unambiguously by type + slug #
PATCH /public/v1/directories/{directory}/listings/{listingType}/{listingSlug} Update a listing by type + slug (including renaming its slug) #
GET /public/v1/directories/{directory}/export Full-directory export for static-site builds #
GET /public/v1/directories/{directory}/listings List published listings #
POST /public/v1/directories/{directory}/listings Create a listing in this directory #
GET /public/v1/directories/{directory}/listings/bulk Bulk fetch all published listings for SSG / static builds #
POST /public/v1/directories/{directory}/listings/bulk Bulk upsert listings by (listingType, slug) #
GET /public/v1/directories/{directory}/listings/{listing} Get a single listing by slug or ID #
GET /public/v1/directories/{directory}/recipes List recipe definitions #
POST /public/v1/directories/{directory}/recipes Create a recipe definition #
GET /public/v1/directories/{directory}/recipes/{recipe}/definition Read one recipe definition #
PATCH /public/v1/directories/{directory}/recipes/{recipe} Update a recipe definition #
DELETE /public/v1/directories/{directory}/recipes/{recipe} Delete a recipe definition #
GET /public/v1/directories/{directory}/recipes/{recipe} Execute a recipe and get matching listings #
GET /public/v1/directories/{directory}/jobs List this directory's jobs #
POST /public/v1/directories/{directory}/jobs Enqueue a job #
GET /public/v1/directories/{directory}/jobs/{jobId} Get one job #
POST /public/v1/directories/{directory}/jobs/{jobId}/cancel Cancel a job #
POST /public/v1/directories/{directory}/jobs/{jobId}/retry Retry a failed or cancelled job #
GET /public/v1/directories/{directory}/taxonomies/{taxonomy}/terms/{term} Read one term by slug #
PATCH /public/v1/directories/{directory}/taxonomies/{taxonomy}/terms/{term} Update a term's label / parent / metadata #
DELETE /public/v1/directories/{directory}/taxonomies/{taxonomy}/terms/{term} Delete a taxonomy term #
GET /public/v1/directories/{directory}/taxonomies/{taxonomy}/resolve Resolve a single raw value to a taxonomy term #
POST /public/v1/directories/{directory}/taxonomies/{taxonomy}/resolve-batch Resolve a batch of raw values; report which mapped and which did not #
GET /public/v1/directories/{directory}/taxonomies/{taxonomy} Get one taxonomy #
PATCH /public/v1/directories/{directory}/taxonomies/{taxonomy} Rename a taxonomy #
DELETE /public/v1/directories/{directory}/taxonomies/{taxonomy} Delete a taxonomy #
POST /public/v1/directories/{directory}/listings/batch Batch FETCH listings by (listingType, slug) pairs (read-only) #
GET /public/v1/directories/{directory}/listing-aliases The directory's redirect map — every slug a listing has moved off #
DELETE /public/v1/directories/{directory}/listing-aliases/{listingType}/{listingSlug} Release a retired slug so it can be used again #
PUT /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/attributes Replace all attribute values on a listing #
PUT /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/terms Replace all taxonomy term assignments on a listing #
PATCH /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/terms Add and remove a listing's taxonomy terms without sending the whole set #
GET /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/snapshots Read a listing's source snapshots #
POST /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/snapshots Write a raw research/source payload to the listing's evidence locker #
GET /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/snapshots/latest/{source} Read the newest snapshot from one source #
GET /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/snapshots/{snapshotId} Read one snapshot #
DELETE /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/snapshots/{snapshotId} Delete one snapshot #
POST /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/enrich Enrich one listing from Google (geocode or Places) #
POST /public/v1/directories/{directory}/site-probes/sweep Queue site probes for this directory’s listings #
POST /public/v1/directories/{directory}/screenshots Queue homepage screenshots for this directory’s listings #
GET /public/v1/directories/{directory}/screenshots Screenshot coverage for this directory #
POST /public/v1/directories/{directory}/research Gather facts from this directory’s listings’ own websites #
GET /public/v1/directories/{directory}/research Research coverage for this directory #
GET /public/v1/directories/{directory}/screening Which listings point at a site that is not really there #
POST /public/v1/directories/{directory}/screening/apply Tag the flagged listings, and hold the confident ones in draft #
GET /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media List media assets for a listing #
POST /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media Attach an image to a listing from a URL #
POST /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media/upload Upload an image file directly (multipart) #
POST /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media/{assetId}/reprocess Retry processing for a failed media asset #
PATCH /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media/{assetId} Update media metadata (alt, caption, role, sortOrder) #
DELETE /public/v1/directories/{directory}/listings/{listingType}/{listingSlug}/media/{assetId} Delete a media asset #
GET /public/v1/directories/{directory}/webhooks List webhooks for a directory #
POST /public/v1/directories/{directory}/webhooks Create a webhook #
GET /public/v1/directories/{directory}/webhooks/{webhookId} Get a webhook #
PATCH /public/v1/directories/{directory}/webhooks/{webhookId} Update a webhook #
DELETE /public/v1/directories/{directory}/webhooks/{webhookId} Delete a webhook #
POST /public/v1/directories/{directory}/webhooks/{webhookId}/test Fire a test ping at the webhook URL (bypasses debounce) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/epicdirectories:epicdirectories-public-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

epicdirectories-public-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: EpicDirectories Public API
  description: API-first directory data platform.
  version: '1.0'
  contact: {}
servers:
- url: https://api.epicdirectories.com
  description: Production
- url: http://localhost:3333
  description: Local development
tags:


# --- truncated at 32 KB (225 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epicdirectories/refs/heads/main/openapi/epicdirectories-public-api-openapi.yml