Full catalog
One subscription unlocks every image collection available through Epochal Stock. No bundle tiers, credit balances, or per-asset checkout in the API.
Epochal Stock · Developer Image API v1
One clear plan for design apps, CMS plugins, and production backends: $50 USD/month, the complete image collection, 30 requests per minute, and unlimited serial original downloads. Authenticate with a Bearer API key—never a query string.
Base URL: https://epochalstock.com/api/v1
· No free tier · No per-image billing · No video in v1
Stats are loaded from GET /stats when this docs site has a server-side API key configured.
Without a key, labeled demo figures are shown so the layout still works locally.
Live from API
The Developer Image API is a catalog and download surface for server-side integrations. Search titles, descriptions, and tags; pull metadata in bulk; then mint short-lived download URLs so secret keys never appear in browser history or access logs.
One subscription unlocks every image collection available through Epochal Stock. No bundle tiers, credit balances, or per-asset checkout in the API.
30 requests/minute per account. Extra API keys do not multiply the limit—use them to isolate projects, not to scale throughput.
Originals are unlimited. Transfers run one at a time per account via five-minute,
single-use tokens. Concurrent downloads return 409.
Thumbnails and watermarked previews for UI grids; signed original URLs for export pipelines. Ideal for editors, template systems, and production backends.
There is exactly one commercial plan. There is no free tier, no per-image billing, and no video access in v1. All keys on an account share the same rate limit and concurrent-download lease.
| Price | Catalog | API limit | Original downloads | API keys |
|---|---|---|---|---|
| $50 USD / month | All image collections | 30 requests / minute per account | Unlimited; one concurrent transfer | Up to 20 named keys |
Subscribe via PayPal from the developer portal after registration. Catalog access activates only when the subscription is ACTIVE. Cancellation stops renewal; access continues until the paid period ends. Images licensed during an active subscription remain licensed afterward under the commercial license.
Authenticated catalog calls require
Authorization: Bearer <key>.
GET /health and binary download token URLs do not use the Bearer key.
Core resource groups
GET /images
GET /images/{id}
POST /images/batch
GET /tags
GET /tags/{tag}
POST /downloads
GET /downloads/{token}
GET /stats
GET /health
| Method | Path | Purpose |
|---|---|---|
GET |
/health |
Service health (no auth) |
GET |
/images |
Search and list images (q, tags, sort, cursor) |
POST |
/images/batch |
Fetch up to 100 image records in one request |
GET |
/images/{image_id} |
Complete metadata for one image |
GET |
/tags |
List normalized tags and image counts |
GET |
/tags/{tag} |
One tag, count, and filtered image list URL |
GET |
/stats |
Catalog totals and index timestamp |
POST |
/downloads |
Create a five-minute single-use original download URL |
Every successful JSON response uses a data / meta envelope.
Errors use a structured error object with a machine-readable code,
human message, optional details, and a request_id. Keep
X-Request-ID when you report issues.
Request → Auth → Catalog → Response
Original files use a two-step flow.
POST /downloads returns a short-lived download_url.
Fetch that URL without the API key. Tokens expire after five minutes and become invalid after first use.
A small newest-first sample via GET /images
Live sample
Thumbnails and previews are for UI and review. Original filesystem paths are never exposed. See Downloads for original transfer details.
Store your key as EPOCHAL_API_KEY on the server. The examples below call
GET /images with a simple text query. Full multi-language samples live on the
Code Examples page.
curl -sS "https://epochalstock.com/api/v1/images?q=golden+forest&limit=10" \
-H "Authorization: Bearer $EPOCHAL_API_KEY" \
-H "Accept: application/json"
const response = await fetch(
"https://epochalstock.com/api/v1/images?q=golden+forest&limit=10",
{
headers: {
Authorization: "Bearer " + process.env.EPOCHAL_API_KEY,
Accept: "application/json",
},
}
);
if (!response.ok) {
throw new Error(await response.text());
}
const body = await response.json();
console.log(body.data.total, body.data.images?.length, body.meta.request_id);
Practical product pain points you can address with the documented v1 catalog API— search, tags, batch metadata, original downloads, and stats—without inventing extra endpoints.
Solve slow or unlicensed stock search with GET /images filters and pagination.
Hydrate many image IDs efficiently with POST /images/batch.
Browse tags with image counts and filter the catalog by tags.
Export originals with two-step tokens without leaking API keys.
Monitor catalog size, tags, health, and rate-limit budget.
Product blueprints that keep secrets on your backend: browser → your server → Epochal API. Each guide maps UI surfaces to real endpoints only.
Blueprint for a design-tool plugin that searches and places Epochal images.
Team moodboards powered by search, tags, and batch hydration.
Multi-project agency library with named keys and shared rate limits.
Suggest and attach stock images to CMS content via the Image API.
Search and serialize original downloads for print and mockup workflows.
Jump to the section you need. Each page is self-contained English developer documentation.
Register, subscribe, create a named key, set env vars, and run your first health check and search.
Bearer keys only, key lifecycle, revocation, and why query-string keys are rejected.
Query parameters, tag filters, sorting, pagination with opaque cursors.
Single-image metadata and up to 100 IDs per batch request.
Normalized tags, counts, and live catalog statistics.
Two-step original downloads, token lifetime, and concurrency rules.
Rate-limit headers, HTTP status codes, and machine-readable error codes.
Copy-paste samples for common server stacks and workflows.
Key hygiene, proxy patterns, PayPal subscription, and license notes.