Stockzen
REST API · v1.3

Stockzen API

Bring Stockzen into your own workflow: resolve an Envato Elements, Storyblocks, Vecteezy, MotionArray, Flaticon or Magnific (formerly Freepik) item URL into the original file (and its license certificate where the provider issues one) with one HTTPS call, using the same plan and daily allowance as your account.

Base URL https://stockzen.io/api/v1 JSON in, JSON out · UTF‑8 · all times are ISO‑8601 UTC

Your API key

API keys are issued per member account and inherit its plan and limits. Log in to create yours — it takes one click.

Quickstart

  1. Create a key above and export it: export STOCKZEN_API_KEY=sz_live_…
  2. POST the item URL (Envato, Storyblocks, Vecteezy, MotionArray, Flaticon or Magnific) to /downloads. You get back a signed file link, a license link where the provider issues one, and your remaining allowance.
  3. GET the links to stream the file and the PDF. They stay valid for one hour.
curl -X POST https://stockzen.io/api/v1/downloads \
  -H "Authorization: Bearer $STOCKZEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://app.envato.com/photos/ecb1d5b6-f41c-4091-83b0-5940582a8985"}'

# then download the file (and license) with the links from the response
curl -L -o photo.jpg      "https://stockzen.io/api/v1/files/<token>"
curl -L -o license.pdf    "https://stockzen.io/api/v1/licenses/<token>"

Authentication

Every request to an account endpoint carries your key in one of two headers. Keys look like sz_live_ followed by 40 hex characters.

Authorization: Bearer sz_live_3f9a1c2b7d4e…      # preferred
X-API-Key: sz_live_3f9a1c2b7d4e…                 # alternative
  • One key per account. Regenerating invalidates the old key instantly; revoking removes it.
  • The key inherits your plan: trial keys get the trial allowance, paid keys the daily limits of the plan. Web and API downloads count against the same allowance.
  • Never ship the key in browser code or public repos. Signed file and license links do not need the key, so hand those to browsers instead.
  • All traffic must be HTTPS. Plain HTTP requests are redirected and will lose the request body.

Endpoints

GET /me API key

Account and plan

Who the key belongs to, the active plan and your current rate-limit window.

Request
curl https://stockzen.io/api/v1/me \
  -H "Authorization: Bearer $STOCKZEN_API_KEY"
Response · 200 OK
{
  "id": 1042,
  "login": "ava.design",
  "email": "ava@studio.example",
  "name": "Ava Martin",
  "plan": { "type": "monthly", "active": true, "product_ids": [3], "upgrade": "https://stockzen.io/shop" },
  "api_key": { "prefix": "sz_live_3f9a1c…", "label": "Default", "created_at": "2026-09-14T16:20:11Z" },
  "auth": "key",
  "rate_limit": { "per_minute": 60, "remaining": 59, "resets_at": "2026-09-14T16:31:00Z" }
}
GET /usage API key

Allowance per downloader

How many downloads you have left today for each service in the catalogue. Trial accounts see a lifetime allowance instead of a daily one. Downloaders that are not live yet (Flaticon, Magnific) are listed with limit: 0 and locked: "under_development"; on a trial, services outside the trial show locked: "not_included_in_trial".

Request
curl https://stockzen.io/api/v1/usage \
  -H "Authorization: Bearer $STOCKZEN_API_KEY"
Response · 200 OK
{
  "plan": "monthly",
  "period": "daily",
  "resets_at": "2026-09-15T04:00:00Z",
  "timezone": "America/New_York",
  "services": [
    { "service": "envato", "name": "Envato Elements", "limit": 15, "used": 3, "remaining": 12, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null },
    { "service": "storyblocks", "name": "Storyblocks", "limit": 15, "used": 0, "remaining": 15, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null },
    { "service": "vecteezy", "name": "Vecteezy", "limit": 15, "used": 1, "remaining": 14, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null },
    { "service": "motionarray", "name": "MotionArray", "limit": 15, "used": 0, "remaining": 15, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null },
    { "service": "flaticon", "name": "Flaticon", "limit": 25, "used": 3, "remaining": 22, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null },
    { "service": "freepik", "name": "Magnific (formerly Freepik)", "limit": 15, "used": 0, "remaining": 15, "period": "daily", "resets_at": "2026-09-15T04:00:00Z", "locked": null }
  ]
}
GET /resolve API key

Identify an item without downloading

Pass ?url=… to check a link before you spend a download: you get the item id, type and title — and the choices the item offers: Storyblocks qualities (item.variants), MotionArray footage formats, Flaticon formats + PNG sizes and Magnific formats / photo sizes / video qualities (item.formats, each with a code you pass back as format). next is the exact POST /downloads call to make. Nothing is charged.

ParameterTypeInDescription
urlstringquery · requiredThe item page URL from any live provider.
formatstringquery · optionalPreselect a format so next.body carries it: MotionArray uhd / hd / original, or a Flaticon / Magnific format code.
sizestringquery · optionalFlaticon PNG / GIF / MP4 only: pixel size (16512).
Request
curl "https://stockzen.io/api/v1/resolve?url=https://www.storyblocks.com/video/stock/aerial-view-of-the-city-at-sunset-435871219" \
  -H "Authorization: Bearer $STOCKZEN_API_KEY"
Response · 200 OK
{
  "service": "storyblocks",
  "item": {
    "id": "435871219",
    "type": "video",
    "title": "Aerial View Of The City At Sunset",
    "variants": [
      { "code": "4KMP4", "label": "4K (MP4)" },
      { "code": "HDMP4", "label": "HD (MP4)" },
      { "code": "HDMOV", "label": "HD (MOV)" }
    ],
    "default_quality": "4KMP4",
    "source_url": "https://www.storyblocks.com/video/stock/aerial-view-of-the-city-at-sunset-435871219",
    "canonical_url": "https://www.storyblocks.com/video/stock/aerial-view-of-the-city-at-sunset-435871219"
  },
  "downloadable": true,
  "charged": false,
  "next": { "method": "POST", "url": "https://stockzen.io/api/v1/downloads", "body": { "url": "https://www.storyblocks.com/video/stock/aerial-view-of-the-city-at-sunset-435871219", "quality": "4KMP4" } }
}

// a Flaticon icon
{
  "service": "flaticon",
  "item": {
    "id": "616408", "type": "icon", "title": "Dog", "pack": { "id": "616407", "name": "Animals and nature" }, "author": "Freepik", "premium": false,
    "preview_url": "https://cdn-icons-png.flaticon.com/512/616/616408.png", "filename": "dog-616408.svg",
    "formats": [
      { "code": "png", "label": "PNG", "extension": "png", "sized": true },
      { "code": "svg", "label": "SVG", "extension": "svg", "sized": false },
      { "code": "eps", "label": "EPS", "extension": "eps", "sized": false },
      { "code": "psd", "label": "PSD", "extension": "psd", "sized": false }
    ],
    "default_format": "svg", "sizes": ["16", "24", "32", "64", "128", "256", "512"], "default_size": "512",
    "source_url": "https://www.flaticon.com/free-icon/dog_616408", "canonical_url": "https://www.flaticon.com/free-icon/dog_616408"
  },
  "downloadable": true, "charged": false,
  "next": { "method": "POST", "url": "https://stockzen.io/api/v1/downloads", "body": { "url": "https://www.flaticon.com/free-icon/dog_616408", "format": "svg" } }
}

// a Magnific photo
{
  "service": "freepik",
  "item": {
    "id": "34129129", "type": "photo", "title": "Side view smiley couple indoors", "preview_url": "https://img.magnific.com/free-photo/…_23-2149903726.jpg", "filename": "side-view-smiley-couple-indoors-34129129.jpg",
    "formats": [
      { "code": "small",    "label": "Small",    "extension": "jpg", "note": "1000 × 667px",  "width": 1000, "height": 667 },
      { "code": "medium",   "label": "Medium",   "extension": "jpg", "note": "1500 × 1000px", "width": 1500, "height": 1000 },
      { "code": "large",    "label": "Large",    "extension": "jpg", "note": "2000 × 1333px", "width": 2000, "height": 1333 },
      { "code": "original", "label": "Original", "extension": "jpg", "note": "5304 × 3536px", "width": 5304, "height": 3536 }
    ],
    "default_format": "original",
    "source_url": "https://www.magnific.com/free-photo/side-view-smiley-couple-indoors_34129129.htm", "canonical_url": "https://www.magnific.com/free-photo/side-view-smiley-couple-indoors_34129129.htm"
  },
  "downloadable": true, "charged": false,
  "next": { "method": "POST", "url": "https://stockzen.io/api/v1/downloads", "body": { "url": "https://www.magnific.com/free-photo/side-view-smiley-couple-indoors_34129129.htm", "format": "original" } }
}
POST /downloads API key

Resolve an item into download links

Send the item page URL from Envato Elements, Storyblocks, Vecteezy, MotionArray, Flaticon or Magnific. Stockzen fetches a fresh signed file link (and a license certificate where the provider issues one, on paid plans) and spends one download from your allowance for that service. Links are valid for one hour and can be fetched repeatedly in that window at no extra cost. For Envato, download.direct_url is Envato's own CDN link — fastest, but it expires after ~10 minutes, so fall back to download.url. Flaticon and Magnific are resolved at fetch time (like their web downloaders), so item.size is null until you call download.url. POST /download is an alias.

ParameterTypeInDescription
urlstringrequiredThe item page URL, e.g. https://app.envato.com/photos/…, https://www.storyblocks.com/video/stock/…-435871219, https://www.vecteezy.com/vector-art/10507624-…, https://motionarray.com/after-effects-templates/…-1792514/, https://www.flaticon.com/free-icon/dog_616408 or https://www.magnific.com/free-vector/…_34129129.htm.
licensebooleanoptional · default trueAlso return a license-certificate link (Envato, MotionArray, Flaticon, Magnific). Ignored on trial plans. Storyblocks and Vecteezy never issue a separate certificate — see license_note.
licenseestringoptional · max 80 charsEnvato and Magnific: name printed on the license certificate. Defaults to your account name.
qualitystringoptional · StoryblocksA variant code from GET /resolve (4KMP4, HDMP4, WAV, MP3, PNG, …). Default: best available.
formatstringoptional · MotionArray, Flaticon, MagnificMotionArray footage: uhd (4K, default), hd or original. Flaticon icons: svg (default when offered), png, eps, psd — animated icons also aep, lottie, gif, mp4; packs and icon fonts are always ZIP. Magnific: a code from GET /resolvezip (default), ai, eps, svg, psd, png for vectors/PSD; small, medium, large, original (default) for photos; 1080p-mp4, 4k-mov, … for video. Unknown codes answer 422 invalid_format with the available list.
sizestringoptional · FlaticonPNG / GIF / MP4 icons only: pixel size from GET /resolve (16, 24, 32, 64, 128, 256, 512). Default 512.
Request
curl -X POST https://stockzen.io/api/v1/downloads \
  -H "Authorization: Bearer $STOCKZEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://app.envato.com/photos/ecb1d5b6-f41c-4091-83b0-5940582a8985", "license": true }'
Response · 201 Created
{
  "id": "dl_3f9a1c2b7d4e",
  "service": "envato",
  "item": {
    "id": "ecb1d5b6-f41c-4091-83b0-5940582a8985",
    "type": "photos",
    "title": null,
    "filename": "ecb1d5b6-f41c-4091-83b0-5940582a8985.jpg",
    "size": 8421133,
    "content_type": "image/jpeg",
    "source_url": "https://app.envato.com/photos/ecb1d5b6-f41c-4091-83b0-5940582a8985"
  },
  "download": {
    "url": "https://stockzen.io/api/v1/files/eyJrIjoiZmlsZSIs…", "method": "GET", "expires_at": "2026-09-14T17:20:11Z",
    "direct_url": "https://dam-assets.envatousercontent.com/EVA/TRX/…?Expires=…", "direct_expires_at": "2026-09-14T16:30:11Z"
  },
  "license":  { "url": "https://stockzen.io/api/v1/licenses/eyJrIjoibGljZW5zZSIs…", "format": "application/pdf", "licensee": "Ava Martin", "expires_at": "2026-09-14T17:20:11Z" },
  "license_note": null,
  "usage": { "service": "envato", "used": 4, "limit": 15, "remaining": 11, "period": "daily", "resets_at": "2026-09-15T04:00:00Z" }
}
GET /files/{token} No key needed

Stream the file

Fetch the file behind a download.url. No API key needed — the signed token is the credential. Responds with Content-Disposition: attachment and the real filename. Follow redirects and stream to disk; files can be several hundred MB. HEAD is accepted too. Expired or tampered tokens answer 410 link_expired.

ParameterTypeInDescription
tokenstringpathThe token from download.url (just call the URL as given).
Request
curl https://stockzen.io/api/v1/files/<token> \
  -L -o output
Response
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 8421133
Content-Disposition: attachment; filename="ecb1d5b6-f41c-4091-83b0-5940582a8985.jpg"

<binary>
GET /licenses/{token} No key needed

Stream the license certificate

Fetch the PDF behind a license.url (Envato Elements, MotionArray, Flaticon and Magnific). For Envato, Stockzen reuses an existing certificate for the item when one exists on our account, so calling it twice does not create duplicates. Storyblocks covers downloads under its account license and Vecteezy ships the license inside the file, so those return "license": null with a license_note.

ParameterTypeInDescription
tokenstringpathThe token from license.url.
Request
curl https://stockzen.io/api/v1/licenses/<token> \
  -L -o output
Response
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="envato-license-ecb1d5b6.pdf"

<binary>
GET /services No key needed

Supported downloaders

The catalogue: which providers are accepted, which are live on the API, which the Telegram bot delivers (telegram_bot), what their item URLs look like, which extra POST /downloads options they take and where their RapidAPI listing lives.

Request
curl https://stockzen.io/api/v1/services
Response · 200 OK
{
  "services": [
    { "key": "envato", "name": "Envato Elements", "api": "available", "telegram_bot": true, "license_certificates": true, "license_note": null,
      "accepted_hosts": ["app.envato.com", "elements.envato.com"],
      "example_url": "https://app.envato.com/photos/ecb1d5b6-f41c-4091-83b0-5940582a8985",
      "options": {}, "web_downloader": "https://stockzen.io/envato_downloader",
      "rapidapi": "https://rapidapi.com/weirdoshubham/api/envato-elements-downloader5" },
    { "key": "storyblocks", "name": "Storyblocks", "api": "available", "telegram_bot": true, "license_certificates": false,
      "license_note": "Storyblocks downloads are covered by the account's unlimited license; no per-item certificate is issued.",
      "accepted_hosts": ["www.storyblocks.com"], "options": { "quality": "Variant code from /resolve (e.g. 4KMP4, HDMP4, WAV, PNG). Default: best available." }, "…": "…" },
    { "key": "vecteezy", "name": "Vecteezy", "api": "available", "telegram_bot": true, "license_certificates": false, "…": "…" },
    { "key": "motionarray", "name": "MotionArray", "api": "available", "telegram_bot": true, "license_certificates": true, "options": { "format": "Footage only: uhd (4K, default), hd or original." }, "…": "…" },
    { "key": "flaticon", "name": "Flaticon", "api": "available", "telegram_bot": true, "license_certificates": true, "license_note": null,
      "accepted_hosts": ["www.flaticon.com"], "example_url": "https://www.flaticon.com/free-icon/dog_616408",
      "options": { "format": "Icons only: a format code from /resolve (svg, png, eps, psd; aep, lottie, gif, mp4 for animated icons). …", "size": "png / gif / mp4 only: pixel size from /resolve (16 … 512). Default 512." },
      "web_downloader": "https://stockzen.io/flaticon_downloader", "rapidapi": null },
    { "key": "freepik", "name": "Magnific (formerly Freepik)", "api": "available", "telegram_bot": true, "license_certificates": true, "license_note": null,
      "accepted_hosts": ["www.freepik.com", "freepik.com", "www.magnific.com", "magnific.com"], "example_url": "https://www.magnific.com/free-photo/side-view-smiley-couple-indoors_34129129.htm",
      "options": { "format": "A format code from /resolve: zip, ai, eps, svg, psd, png for vectors/PSD; small, medium, large, original for photos; 1080p-mp4, 4k-mov … for video. …" },
      "web_downloader": "https://stockzen.io/freepik_downloader", "rapidapi": null }
  ]
}
GET /status No key needed

Live status and uptime

The same data as stockzen.io/status: overall state, per-service state, 7-day uptime and average response time. Cached for 60 seconds.

Request
curl https://stockzen.io/api/v1/status
Response · 200 OK
{
  "overall": "operational",
  "checked_at": "2026-09-14T16:20:00Z",
  "services": [
    { "key": "site", "name": "Website & member area", "state": "operational", "uptime_7d": 100, "avg_response_ms": 210, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "envato", "name": "Envato Elements", "state": "operational", "uptime_7d": 99.8, "avg_response_ms": 1610, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "storyblocks", "name": "Storyblocks", "state": "operational", "uptime_7d": 99.9, "avg_response_ms": 980, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "vecteezy", "name": "Vecteezy", "state": "operational", "uptime_7d": 99.9, "avg_response_ms": 1120, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "motionarray", "name": "MotionArray", "state": "operational", "uptime_7d": 99.7, "avg_response_ms": 1340, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "flaticon", "name": "Flaticon", "state": "operational", "uptime_7d": 100, "avg_response_ms": 810, "last_check": "2026-09-14T16:20:00Z" },
    { "key": "freepik", "name": "Magnific (formerly Freepik)", "state": "operational", "uptime_7d": 99.9, "avg_response_ms": 790, "last_check": "2026-09-14T16:20:00Z" }
  ],
  "page": "https://stockzen.io/status"
}
GET /health No key needed

Is a downloader up?

A one-line health check for monitors and RapidAPI: 200 with ok: true while the provider session is valid and answering, 503 otherwise. Pick the downloader with ?service=envato|storyblocks|vecteezy|motionarray (default envato; on RapidAPI, the listing's own). Cached for 60 seconds.

ParameterTypeInDescription
servicestringquery · optionalWhich downloader to check. Default envato.
Request
curl https://stockzen.io/api/v1/health
Response · 200 OK
{
  "ok": true,
  "service": "envato",
  "state": "operational",
  "session": "valid",
  "response_ms": 1610,
  "uptime_7d": 99.8,
  "checked_at": "2026-09-14T16:20:00Z",
  "status_page": "https://stockzen.io/status"
}

Download flow & limits

1Resolve

POST /downloads validates the URL, asks the provider for a fresh signed file and checks your allowance. Nothing is charged if this fails.

2Charge

On success one download is deducted for that service and a 201 is returned with usage so you can show remaining quota.

3Fetch

Links live for 60 minutes. If the provider's own link expires sooner, we refresh it transparently — fetching the same link twice never costs a second download.

  • Daily limits reset at midnight America/New_York (resets_at is given in UTC). Trial plans have a one-time lifetime allowance instead.
  • License certificates are included on paid plans: Envato issues a PDF in your account name (or the licensee you pass), MotionArray its own per-item PDF. Storyblocks covers downloads under its account license and Vecteezy bundles the license inside the file — both return "license": null with an explanatory license_note, as do trial plans.
  • Qualities & formats: Storyblocks items come in several variants (4K / HD / SD, WAV / MP3, PNG / JPG…) and MotionArray footage in 4K / HD / original. GET /resolve lists them; pass quality / format to POST /downloads or let us pick the best one.
  • Provider links are short-lived (Storyblocks ~30 s, MotionArray and Vecteezy minutes). Always go through download.url — it fetches a fresh upstream link every time and stays valid for an hour.
  • Idempotency: there is no idempotency key yet — if your client times out after a 201 was produced, the download was charged. Set generous timeouts (60 s) on POST /downloads; providers can be slow.

Errors

Errors use conventional HTTP status codes and always carry a machine-readable error.code plus a human message you can surface to users. Extra fields (e.g. service, resets_at, retry_after) appear when relevant.

{
  "error": {
    "code": "limit_reached",
    "message": "Daily limit of 15 Envato Elements downloads reached. Resets at 2026-09-15T04:00:00Z.",
    "status": 429,
    "service": "envato",
    "limit": 15,
    "used": 15,
    "resets_at": "2026-09-15T04:00:00Z"
  },
  "docs": "https://stockzen.io/api#errors"
}
StatusCodeMeaning
400invalid_jsonThe request body could not be parsed as JSON.
401unauthorized · invalid_api_keyNo key was sent, or the key is unknown/revoked. Create one on this page.
403no_active_planThe account has no active subscription. Pick a plan at stockzen.io/shop.
403account_not_foundThe member account behind the key was deleted. Create a new key from a live account.
403not_included_in_trial · no_allowanceYour plan does not include this downloader.
403wrong_listingRapidAPI only: the link belongs to a different provider than the listing you subscribed to. error.rapidapi points to the right listing.
404not_foundUnknown endpoint.
405method_not_allowedWrong HTTP method for the endpoint.
410link_expiredA file/license link is older than one hour or was tampered with. Call POST /downloads again.
422validation_error · unsupported_url · invalid_urlThe url is missing, not from a supported provider, or not an item page.
422invalid_quality · invalid_format · unknown_serviceThe requested Storyblocks quality / MotionArray format is not offered for that item (error.available lists what is), or ?service= is unknown.
429limit_reachedDaily (or trial) allowance for that service is used up. Retry-After and error.resets_at tell you when it resets.
429rate_limitedMore requests in a minute than your allowance (60 per key; per plan on RapidAPI). Back off for Retry-After seconds.
501service_not_availableThe provider is supported on the website but not on the API yet; error.web_downloader points to the web tool.
502upstream_errorThe provider did not answer correctly. Safe to retry after a short pause; no download is charged unless a 201 was returned.
500internal_errorOur fault. Please retry, and tell support if it persists.

Rate limits

Account endpoints allow 60 requests per minute per key, in fixed one-minute windows. Every response includes the window state; when you exceed it you get 429 rate_limited with Retry-After. File and license streams are not rate limited but are bound to their one-hour token.

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1789402860        # unix time the window resets
Retry-After: 23                      # only on 429

Service availability

Live status →

All 6 downloaders are live on the API and in the Telegram bot; the 4 with a RapidAPI listing can also be subscribed to there without a Stockzen account.

DownloaderAccepted linksLicense PDFOptionsAPI
Envato Elements
envato
app.envato.com elements.envato.com Yes Available
Storyblocks
storyblocks
www.storyblocks.com
Storyblocks downloads are covered by the account's unlimited license; no per-item certificate is issued.
quality
Variant code from /resolve (e.g. 4KMP4, HDMP4, WAV, PNG). Default: best available.
Available
Vecteezy
vecteezy
www.vecteezy.com
Vecteezy bundles the license inside the downloaded file, so there is no separate certificate.
Available
MotionArray
motionarray
motionarray.com Yes format
Footage only: uhd (4K, default), hd or original. See /resolve for what the item offers.
Available
Flaticon
flaticon
www.flaticon.com Yes format
Icons only: a format code from /resolve (svg, png, eps, psd; aep, lottie, gif, mp4 for animated icons). Default: svg when offered, else png. Packs and icon fonts are always a ZIP.
size
png / gif / mp4 only: pixel size from /resolve (16 … 512). Default 512.
Available
Magnific (formerly Freepik)
freepik
www.freepik.com freepik.com www.magnific.com magnific.com Yes format
A format code from /resolve: zip, ai, eps, svg, psd, png for vectors/PSD; small, medium, large, original for photos; 1080p-mp4, 4k-mov … for video. Default: zip for vectors/PSD, original for photos and video.
Available
Sending a link for a provider that isn't live on the API returns 501 service_not_available with error.web_downloader, so clients can fall back gracefully.

Prefer to pay per request instead of a Stockzen plan? Each downloader is also published on RapidAPI Hub as its own API — same endpoints, same responses. RapidAPI handles the key (X-RapidAPI-Key), billing and quotas; a subscription covers one provider, and links from another provider answer 403 wrong_listing with a pointer to the right listing. Files and licenses are still fetched straight from stockzen.io, so they never count as RapidAPI requests or bandwidth.

ListingAcceptsDeliversSpec for Studio
Envato Elements Downloader app.envato.com elements.envato.com Original files · License certificate (PDF) · Direct CDN link · Signed 1-hour download link openapi.json?target=rapidapi&service=envato
Storyblocks Downloader www.storyblocks.com Original files · All qualities (4K / HD / SD, WAV / MP3, PNG / JPG) · Video, audio, images & templates · Signed 1-hour download link openapi.json?target=rapidapi&service=storyblocks
Vecteezy Downloader www.vecteezy.com Original files · License bundled in the download · Vectors, PNG, photos & video · Signed 1-hour download link openapi.json?target=rapidapi&service=vecteezy
MotionArray Downloader motionarray.com Original files · License certificate (PDF) · 4K / HD footage formats · Signed 1-hour download link openapi.json?target=rapidapi&service=motionarray

Every listing has the same four plans:

PlanPriceRequestsOver quotaRate limit
Basic Free 5 / day Hard limit 1 / min
Pro $5.99 / mo 200 / month + $0.02 per request 5 / min
Ultra Recommended $14.99 / mo 800 / month + $0.015 per request 10 / min
Mega $29.99 / mo 2,000 / month + $0.01 per request 15 / min
  • One POST /download = one request; GET /resolve, /me, /usage and /health are requests too but never spend a download.
  • Quota & limits are enforced by RapidAPI on your subscription cycle, separately per listing; GET /me mirrors them (plan.rapidapi, usage) counted per UTC day / calendar month, and the free plan also stops at 5 downloads a day on our side.
  • License certificates (Envato) are issued to your RapidAPI username unless you pass licensee.
  • Import the spec: the per-listing variants above are what goes into RapidAPI Studio; openapi.json is the full multi-provider one for Postman, Insomnia, n8n, Make or Zapier.
  • Webhook tools (n8n, Make, Zapier): one HTTP node for POST /downloads, then a second HTTP/Download node on download.url. Use item.filename for the file name.

Changelog

Sep 2026
v1.3Flaticon and Magnific (formerly Freepik) are live on the API: icons, stickers, animated icons, packs and icon fonts; vectors, PSD, photos and video. GET /resolve lists every format the item offers (item.formats[].code), POST /downloads takes format (and size for PNG / GIF / MP4 icons), license PDFs for both. Also in the Telegram bot; telegram_bot added to GET /services.
Sep 2026
v1.2Storyblocks, Vecteezy and MotionArray are live on the API and each has its own RapidAPI listing (Storyblocks Downloader, Vecteezy Downloader, MotionArray Downloader) with the same plans. New quality (Storyblocks) and format (MotionArray) options on downloads, item.variants / item.formats on GET /resolve, ?service= on GET /health, license_note and options in GET /services, and the 403 wrong_listing error for RapidAPI.
Sep 2026
v1.1 — published on RapidAPI with Basic / Pro / Ultra / Mega plans. New GET /resolve (identify an item for free), GET /health, POST /download alias, licensee on downloads, and download.direct_url (Envato's CDN link) in every download response.
Sep 2026
v1.0 — first public release: API keys, /me, /usage, /services, /status, POST /downloads with signed file and license links, Envato Elements live. Storyblocks, Vecteezy and MotionArray follow; Flaticon and Magnific (formerly Freepik) once their downloaders leave development.

Questions or a use-case we should support? Open a ticket or email support@stockzen.io. Use of the API is covered by our Terms; files remain subject to each provider's license.