Photography — entry 012 of 25

Lorem Picsum

Verified Jul 2026

Lorem Picsum serves placeholder photos by encoding the size, and optionally a specific image ID or a seed, directly into the request URL — no signup or key required. Every photo comes from Unsplash's library, and query parameters can request a grayscale or blurred variant, a JPEG or WebP file extension, or a random cache-busting suffix for multiple images at one size. A companion /v2/list JSON endpoint returns the full photo catalog with author and dimension metadata for browsing before you hotlink.

Lorem Picsum serves placeholder photos entirely through the request URL — a size, and optionally a specific image id or a random seed, encoded directly in the path — with no signup or key required. Every photo comes from Unsplash's library, and a companion /v2/list JSON endpoint returns a paginated catalogue of the same photos with author and dimension metadata, useful for browsing before hotlinking a specific id.

lorem-ipsumplaceholder-imagesimage-generationunsplashkeyless
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJPEG, WebP, JSONResponses can be requested as JPEG or WebP or JSON.

GreatAPIs Score

Score80out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats15/15Supports 3 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 80 on greatapis.com
<a href="https://greatapis.com/api/lorem-picsum/"><img src="https://greatapis.com/badge/lorem-picsum.svg" alt="Scored 80 on greatapis.com"></a>

Auth quickstart

  1. No API key or account is needed — every endpoint, including /v2/list, answers a bare GET.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

List the photo catalogue

GEThttps://picsum.photos/v2/list?page=1&limit=2

200 application/json

[{"id":"0","author":"Alejandro Escamilla","width":5000,"height":3333,"url":"https://unsplash.com/photos/yC-Yzbqy7PY","download_url":"https://picsum.photos/id/0/5000/3333"},{"id":"1","author":"Alejandro Escamilla","width":5000,"height":3333,"url":"https://unsplash.com/photos/LNRyGwIJr5c","download_url":"https://picsum.photos/id/1/5000/3333"}]

limit=2 was requested directly this run (not truncated after capture) — both entries are complete, unmodified objects. Each download_url is itself a hotlinkable image URL at that photo's native dimensions, not another JSON call.

Developer reference

Gotchas & limits

  • The image endpoints (e.g. /id/0/5000/3333 or /200/300 for a random photo at that size) don't serve image bytes directly — a live probe found they 302-redirect to a fastly.picsum.photos URL carrying an hmac signature, so a caller following redirects transparently (as browsers and most HTTP clients do) sees a normal image/jpeg, but code that disables redirect-following must handle the 302 itself. Only /v2/list and /id/{id}/info return JSON directly with no redirect — a live probe of /id/237/info confirmed its shape: {"id","author","width","height","url","download_url"}, the same fields /v2/list returns per entry.
  • /v2/list is paginated at 30 items per page by default (override with limit, observed accepting at least 2 in a live probe) and returns a Link response header with rel="next" pointing at the next page — there is no total count in the JSON body itself, only in that header's implied pagination.
  • Requesting an image with a seed (/seed/{seed}/{width}/{height}) always returns the same photo for that seed, but requesting the same numeric /id/{id}/... with different width/height crops/scales the same source photo — the id, not the dimensions, determines which Unsplash photo you get.
  • Grayscale (?grayscale) and blur (?blur=1-10) are query params on the image endpoints only; they do nothing on /v2/list or /id/{id}/info, which always return the unmodified metadata regardless of query string.