place.dog API
Free placeholder image service with no key: dog photographs at any width and height straight from the URL path, with greyscale and specific-image options. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the place.dog API?
place.dog returns dog photographs sized to whatever dimensions you put in the URL path, with no API key. The response is the image itself, and path segments select greyscale or a specific numbered photograph.
There is no meaningful difference in mechanism between this and the other animal placeholder services — the value is that a designer reviewing a mockup reacts differently to a dog than to `Lorem ipsum` in a grey rectangle. Two numbers in the path, one dog, no setup of any kind.
The feature that distinguishes it is deterministic selection. Appending `/id/{n}` pins a specific photograph, so a mockup that needs the same picture every time — a screenshot for documentation, a visual regression test — will actually get it, rather than a different dog on every reload. That is exactly the property random placeholder services lack. Note that the declared `Content-Type` is not always an accurate guide to the actual bytes, which is harmless in an `img` tag but worth knowing if you are saving files.
Quick facts
- Base URL
https://place.dog- Authentication
- No API key, no account and nothing to configure.
- Rate limit
- No published limit. Images cache well per size.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the place.dog API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch a 300x200 dog placeholder
GET https://place.dog/300/200
curl 'https://place.dog/300/200'const res = await fetch("https://place.dog/300/200");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://place.dog/300/200", timeout=20)
res.raise_for_status()
print(res.json())# This endpoint returns image/jpeg, not JSON.
# The response body is the image itself, so it can be used directly as an
# <img src="..."> or saved to a file — there is nothing to parse.
#
# Verified: HTTP 200, Content-Type: image/jpegParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
width | path | Required | Requested width in pixels. 300 |
height | path | Required | Requested height in pixels. 200 |
/g/ | path | Optional | Prefix returning the greyscale version. |
/id/{n} | path | Optional | Pin a specific numbered photograph so the result is deterministic. /id/5 |
Response fields
(body)image- The photograph itself, ready to use as an `img` src. Nothing to parse.
Content-Typeheader- Declared as `image/jpeg`, though the bytes served are not always JPEG. Sniff the actual format if you are writing files.
What you can build with the place.dog API
- Fill a card grid in a prototype with real photography
- Pin a fixed image for documentation screenshots or visual regression tests
- Check a layout in greyscale before committing to colour
- Demonstrate responsive images across breakpoints
Common errors and how to fix them
Different image on every reload
Without `/id/`, selection is random.
Fix: Append `/id/{n}` to pin a specific photograph when you need a stable result.
Saved file has the wrong extension
The declared content type does not always match the bytes.
Fix: Detect the format from the file signature rather than trusting the header when writing to disk.
Cross-origin fetch blocked
No CORS header is sent.
Fix: An `img` tag works fine. Canvas and fetch access need a proxy.
place.dog API — frequently asked questions
Is place.dog free?
Yes, free with no key and no account. It is a placeholder service intended for mockups and prototypes.
Can I get the same image every time?
Yes — append `/id/{n}` to pin a specific numbered photograph. That makes it usable for documentation screenshots and visual regression tests, which random placeholders are not.
How do I get greyscale?
Prefix the path with `/g/`, in the same way as the other services in this family.
Should I use it in production?
No. There is no uptime commitment and the image licensing is unclear. Use it while designing, then bundle real assets.
Tools that pair with this API
Placeholder Image Generator
Generate placeholder images at any size online — solid, gradient or checkerboard with the dimensions as text. Download PNG or copy a data URI for markup.
Image Cropper
Crop images online to an exact rectangle with pixel-precise x, y, width and height inputs or aspect-ratio presets. Free, private and browser-based.
Bulk Image Resizer
Resize up to 30 images at once by width, height, percentage or exact dimensions. Batch photo resizing that runs entirely in your browser.
place.dog is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.