How it works
Keep generative APIs for unique creatives. Route everything else through Epochal Stock with a server-held key and a predictable monthly cap.
1. Subscribe once
Activate the single $50 USD/month plan on Epochal Stock. There is no free tier and no per-image billing in v1.
2. Create a named API key
Keys are shown once. Store them in environment variables. Never put keys in front-end bundles, mobile apps, or query strings.
3. Search the catalog
GET https://epochalstock.com/api/v1/images with q, tags, tag_mode, sort, limit, and cursor.
4. Download originals safely
POST /downloads returns a five-minute single-use URL. Fetch the binary without the API key. Only one original transfers at a time per account.
5. Respect the rate limit
30 requests/minute per account. Use POST /images/batch to fetch up to 100 metadata records per request when hydrating many IDs.
Example (Node server)
const response = await fetch("https://epochalstock.com/api/v1/images?tags=forest&sort=newest", {
headers: { Authorization: `Bearer ${process.env.EPOCHAL_API_KEY}` }
});
if (!response.ok) throw new Error(await response.text());
const { data } = await response.json();
Stock examples for this page
Pulled server-side from Epochal tags: laptop, technology, server. Previews are cached; API keys never hit the browser.





