BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://place.dog/300/200'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://place.dog/300/200", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
# 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/jpeg

Parameters

ParameterTypeRequiredDescription
widthpathRequiredRequested width in pixels. 300
heightpathRequiredRequested height in pixels. 200
/g/pathOptionalPrefix returning the greyscale version.
/id/{n}pathOptionalPin 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

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.