ax-check.com
by Gauge
D
Dog API
dogapi.dog
ax-check.com
Checked 19 September 2026
B
81/100
Agents need your login
Dog API is free, no key needed, and docs are easy to find.
llms.txt gives a compact, actionable guide with endpoints and runnable requests; only gap is no Markdown version of the homepage itself.
2 fixes to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no dogapi.dog account. Recorded 19 September 2026 on Pi.
3 recorded · 3m 37s
3m 37s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user asks about "Dog API" — likely The Dog API (thedogapi.com). Let me check if there's network access and an API key. Let me inspect the sandbox first.
I should be plain about blockers. Let me check environment.
✓$ ls -la /sandbox/repo; env | grep -i -E "dog|api|key" | sed 's/=.*/=<set>/'✓└{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 07:59 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00…ctrl+o
{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 19 07:59 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\nPI_GATEWAY_API_KEY=<set>\nGIT_CONFIG_KEY_0=<set>\n","type":"text"}]}✓$ curl -s -m 15 "https://api.thedogapi.com/v1/breeds?limit=1" | head -c 800; echo; echo "exit=$?"✓└{"content":[{"text":"{\"statusCode\":403,\"timestamp\":\"2026-09-19T07:59:28.487Z\",\"path\":\"/v1/breeds?limit=1\",\"message\":\"Authentication required. Pleas…ctrl+o
{"content":[{"text":"{\"statusCode\":403,\"timestamp\":\"2026-09-19T07:59:28.487Z\",\"path\":\"/v1/breeds?limit=1\",\"message\":\"Authentication required. Please provide a valid API key.\",\"error\":\"Forbidden\"}\nexit=0\n","type":"text"}]}›Thinking…
The Dog API now requires authentication (used to allow keyless). No API key set. So I'm blocked: can't call it. But I can still build the example code, and explain pricing from docs. Let me try fetching pricing page.
Note there is network access. Let me check thedogapi.com pricing page.
✓$ curl -sL -m 20 "https://thedogapi.com/pricing" | sed 's/<[^>]*>/ /g' | tr -s ' \n' ' \n' | grep -iE "free|\\$|per month|limit|request" | head -40✓└{"content":[{"text":"\t\t 404 - Page Not Found | The Cat API {\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.…ctrl+o
{"content":[{"text":"\t\t 404 - Page Not Found | The Cat API {\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.thedogapi.com/#organization\",\"name\":\"That API Company\",\"url\":\"https://thatapicompany.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://www.thedogapi.com/#website\",\"name\":\"TheDogAPI\",\"url\":\"https://www.thedogapi.com\",\"description\":\"Dog API with dog images and structured, vet-reviewed data on 650+ dog breeds and mixes: breed characteristics, health predispositions, dietary guidance, allergens and facts.\",\"inLanguage\":[\"en\",\"es\"],\"publisher\":{\"@id\":\"https://www.thedogapi.com/#organization\"}}]} {\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://thedogapi.com/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pricing\",\"item\":\"https://thedogapi.com/pricing\"}]} {\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"The Dog API\",\"url\":\"https://thedogapi.com\",\"description\":\"The page you are looking for could not be found. Return to The Cat API homepage to explore our developer-friendly cat image API.\",\"provider\":{\"@type\":\"Organization\",\"name\":\"That API Company\",\"url\":\"https://thatapicompany.com\"},\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://thedogapi.com/signup?query={search_term_string}\",\"query-input\":\"required name=search_term_string\"}} {\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"That API Company\",\"url\":\"https://thatapicompany.com\",\"description\":\"Providers of The Dog API and other developer APIs\",\"contactPoint\":{\"@type\":\"ContactPoint\",\"contactType\":\"customer service\",\"email\":\"aden@thatapicompany.com\"},\"sameAs\":[\"https://github.com/AdenForshaw\",\"https://discord.gg/B6RVQBU4hW3\"]} {\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"The Dog API\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Web\",\"description\":\"The page you are looking for could not be found. Return to The Cat API homepage to explore our developer-friendly cat image API.\",\"url\":\"https://thedogapi.com\",\"offers\":[{\"@type\":\"Offer\",\"name\":\"Free Tier\",\"price\":\"0\",\"priceCurrency\":\"USD\",\"description\":\"Free access with 10,000 requests per month\"},{\"@type\":\"Offer\",\"name\":\"Pro Tier\",\"price\":\"10\",\"priceCurrency\":\"USD\",\"description\":\"Commercial license with 100,000 requests per month\"}],\"provider\":{\"@type\":\"Organization\",\"name\":\"That API Company\"}} \n\t (function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a3d70d2d5c4750e2',t:'MTc4OTgwNDc3MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})(); \n","type":"text"}]}✓$ curl -s -m 15 "https://api.thedogapi.com/v1/images/search?limit=1" -o /dev/null -w "%{http_code}\n"; curl -s -m 15 -H "x-api-key: demo" "https://api.thedogapi.com/v1/breeds?limit=1" | head -c 300✓└{"content":[{"text":"200\n{\"statusCode\":403,\"timestamp\":\"2026-09-19T07:59:31.580Z\",\"path\":\"/v1/breeds?limit=1\",\"message\":\"Authentication required. …ctrl+o
{"content":[{"text":"200\n{\"statusCode\":403,\"timestamp\":\"2026-09-19T07:59:31.580Z\",\"path\":\"/v1/breeds?limit=1\",\"message\":\"Authentication required. Please provide a valid API key.\",\"error\":\"Forbidden\"}","type":"text"}]}›Thinking…
Interesting: /v1/images/search returned 200 without a key? Let me check the body.
✓$ curl -s -m 15 "https://api.thedogapi.com/v1/images/search?limit=2&size=small" ; echo; curl -s -m 15 "https://api.thedogapi.com/v1/breeds/images/search?limit=1" | head -c 300✓└{"content":[{"text":"[{\"id\":\"tmAE5C1taz\",\"url\":\"https://storage.googleapis.com/dog-api-uploads-prod/originals/1b8f2066-261d-46d4-a358-23f61edc5d1a.png\",…ctrl+o
{"content":[{"text":"[{\"id\":\"tmAE5C1taz\",\"url\":\"https://storage.googleapis.com/dog-api-uploads-prod/originals/1b8f2066-261d-46d4-a358-23f61edc5d1a.png\",\"width\":2950,\"height\":2242},{\"id\":\"ryPgVl5N7\",\"url\":\"https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/ryPgVl5N7.jpg\",\"width\":1199,\"height\":829}]\n{\"statusCode\":404,\"timestamp\":\"2026-09-19T07:59:34.703Z\",\"path\":\"/v1/breeds/images/search?limit=1\",\"message\":\"Cannot GET /v1/breeds/images/search?limit=1\",\"error\":\"Not Found\"}","type":"text"}]}›Thinking…
So images/search works keyless (or limited), but breeds requires key. No API key available → I can build the example but full functionality is blocked.
Let me check if there's an SDK — @thedogapi/sdk on npm. Check npm registry availability.
Let's build a small Node example. Check node availability.
×$ node -v; npm -v; curl -s -m 20 https://registry.npmjs.org/@thedogapi/sdk | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['dist-tags']); print(list(d['versions'])[-3:]); print(d.get('des…✓└{"content":[{"text":"v22.23.2\n10.9.8\nTraceback (most recent call last):\n File \"<string>\", line 1, in <module>\nKeyError: 'dist-tags'\n\n\nCommand exited w…ctrl+o
node -v; npm -v; curl -s -m 20 https://registry.npmjs.org/@thedogapi/sdk | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['dist-tags']); print(list(d['versions'])[-3:]); print(d.get('description'))"
{"content":[{"text":"v22.23.2\n10.9.8\nTraceback (most recent call last):\n File \"<string>\", line 1, in <module>\nKeyError: 'dist-tags'\n\n\nCommand exited with code 1","type":"text"}],"details":{}}›Thinking…
npm registry fetch failed (maybe blocked/404). Let me test.
✓$ curl -s -m 20 -o /dev/null -w "%{http_code}\n" https://registry.npmjs.org/@thedogapi/sdk; curl -s -m 20 https://registry.npmjs.org/@thedogapi%2Fsdk | head -c 300✓└{"content":[{"text":"404\n{\"error\":\"Not found\"}","type":"text"}]}
›Thinking…
The official SDK package isn't on npm under that name (maybe it's @thedogapi/sdk doesn't exist; there is "thedogapi" npm?). Let's check thedogapi.
Actually simplest: use plain fetch (Node 22 built-in) — no dependency needed. That's "light".
Let me write the example and test it against the keyless endpoint, and show that breed endpoints need a key.
✓$ curl -s -m 20 https://registry.npmjs.org/thedogapi | head -c 200; echo; curl -s -m 15 "https://api.thedogapi.com/v1/images/search?limit=1&has_breeds=1" | head -c 400✓└{"content":[{"text":"{\"error\":\"Not found\"}\n[{\"id\":\"K5hLbTi6d\",\"url\":\"https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/K5hLbTi6d.jpg\",\"…ctrl+o
{"content":[{"text":"{\"error\":\"Not found\"}\n[{\"id\":\"K5hLbTi6d\",\"url\":\"https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/K5hLbTi6d.jpg\",\"width\":1080,\"height\":1080}]","type":"text"}]}›Thinking…
has_breeds=1 didn't include breeds array — probably needs key too (breed data is behind auth). Let me write the example now.
Files:
- dog-api-example/random_dog.mjs — keyless demo
- dog-api-example/dog_api_client.mjs — small client using x-api-key
- README.md with pricing & notes
- .env.example
Then run the keyless one to verify.
✓write /sandbox/repo/dog-api-example/dog_api_client.mjs✓└{"content":[{"text":"Successfully wrote 1677 bytes to /sandbox/repo/dog-api-example/dog_api_client.mjs","type":"text"}]}
✓write /sandbox/repo/dog-api-example/random_dog.mjs✓└{"content":[{"text":"Successfully wrote 869 bytes to /sandbox/repo/dog-api-example/random_dog.mjs","type":"text"}]}
›Thinking…
The size=small param may not be honored (it returned original sizes). Fine. Let me run it.
Actually earlier with size=small the width was 2950x2242 — so size param seems ignored or applies to CDN thumbnails. Let's just run and see.
✓$ cd /sandbox/repo/dog-api-example && node random_dog.mjs✓└{"content":[{"text":"image S1V3Qeq4X: 600x483 https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/S1V3Qeq4X.jpg\nimage kGruq6EvlB: 1200x896 https://sto…ctrl+o
{"content":[{"text":"image S1V3Qeq4X: 600x483 https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/S1V3Qeq4X.jpg\nimage kGruq6EvlB: 1200x896 https://storage.googleapis.com/cdn4.thedogapi.com/optimized/kGruq6EvlB.jpg\nimage r15m-lc4m: 645x380 https://s3.us-west-2.amazonaws.com/cdn2.thedogapi.com/images/r15m-lc4m.jpg\n\nNo DOG_API_KEY set -> breed endpoints skipped (they return 403).\n","type":"text"}]}›Thinking…
Works. Now add README with pricing, and note blocker.
Pricing from structured data on thedogapi.com: Free tier $0, 10,000 requests/month; Pro tier $10/month commercial license, 100,000 requests/month. Let me try to confirm on the pricing page — it 404'd. Try https://thedogapi.com/#pricing or thatapicompany.com. Let me quickly check the homepage.
✓$ curl -sL -m 20 "https://thedogapi.com/" | sed 's/<[^>]*>/ /g' | tr -s ' \n' ' \n' | grep -iE "\\$|free|requests per|month" | head -30✓└{"content":[{"text":"\t\t Products Solutions Students Resources Login EN ES Vet verified data to transform your business Animal Intelligence Explore Products Fr…ctrl+o
{"content":[{"text":"\t\t Products Solutions Students Resources Login EN ES Vet verified data to transform your business Animal Intelligence Explore Products Free Access Vet Verified Data you can trust, updated with the latest peer-reviewed science Learn more Visual Intelligence Seamless integration to deepen your relationship with your customers Learn more Health & Breed data Medical, nutritional and behavioural data on over 650 breeds and mixes Learn more AI powered by the latest medical science A medical database of hundreds of vets with the latest peer-reviewed studies, and years of mediation to deliver smart experiences you can depend on to build revenue. Book a call Get deeper insights into your customers' pets Label your customer's pet images with medical, nutritional & behavioural data to deliver actionable insights for your business. Book a call Fast integration Our APIs are cited by universities and institutions as simple and easiest to use. Revenue Building Unlock actionable insights with visual intelligence, powered by AI to grow your business. Ahead of the competition Set your business apart as the animal intelligence expert prices and support for your business. Trusted by Institutions Ready to Scale Your Pet Business? Join leading companies who trust TheDogAPI Enterprise to power their applications. Get started with a\n\t\t\t\t\t\t\tcustom solution tailored to your needs. Free migration assistance 30-day money-back guarantee Let's paws and chat Get a personalized demo and custom pricing for your Enterprise needs First Name * Last Name * Work Email * Company * I'm interested in * -- Select a package -- General Inquiry Startup Image Intelligence Personalised Journeys Enterprise Message * Request Enterprise Demo Frequently Asked Questions How accurate is The Dog API's breed identification? How does The Dog API help with regulatory compliance? Can The Dog API help us with health risk profiling? What kind of behavioral assessment data does The Dog API provide? Does The Dog API offer multi-language support? Can The Dog API's data help us develop new pet products? Can The Dog API integrate with our existing systems? What kind of support does The Dog API offer? What's included in The Dog API Enterprise plan? How does The Dog API Enterprise pricing work? Can The Dog API provide custom data formats or endpoints? What security and compliance features are available? Do you only do dogs? Does The Dog API help adoption shelters? I don't have funding, can I get these features without an Enterprise subscription? Details About Us Blog Community and Support Discord Forum Our other APIs The Auth API The Report API Overture Maps API More APIs Legals Terms & Conditions Privacy Policy Data Licensing \n\t (function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a3d70db5da94dda4',t:'MTc4OTgwNDc5Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})(); \n","type":"text"}]}›Thinking…
The public site now pushes Enterprise/custom pricing; the machine-readable Offer data on the site still lists Free ($0, 10k req/month) and Pro ($10/mo, 100k req/month, commercial license). I'll report that with the caveat that /pricing 404s and the site now steers to custom/enterprise pricing.
Write README.
✓write /sandbox/repo/dog-api-example/README.md✓└{"content":[{"text":"Successfully wrote 2275 bytes to /sandbox/repo/dog-api-example/README.md","type":"text"}]}
›Thinking…
The user hasn't asked anything substantive yet — the last message was just system instructions plus a context reminder. My previous turn had no real reasoning to speak of; I acknowledged the instructions. There is no prior thinking content to reproduce beyond that acknowledgment.
Done — a working example is in /sandbox/repo/dog-api-example/ (README.md, dog_api_client.mjs, random_dog.mjs). Plain fetch, Node 22, no deps, no local services.
What runs now (verified): node random_dog.mjs hits GET /v1/images/search keyless and prints three dog images.
Blocked on one thing: there is no DOG_API_KEY in this environment, and The Dog API now requires auth for breed endpoints — /v1/breeds returns 403 {"message":"Authentication required..."}. The example handles this gracefully (skips breeds, prints why). Also, there's no first-party JS SDK on npm: @thedogapi/sdk and thedogapi both 404 on the registry, so I wrote a ~50-line fetch client with the x-api-key header and the pagination-* headers exposed.
Pricing (from thedogapi.com's own machine-readable offer data — /pricing itself 404s, so verify before committing):
- Free: $0, 10,000 requests/month
- Pro: $10/month, 100,000 requests/month, includes commercial license
- Enterprise: custom/demo-driven, 30-day money-back guarantee
Quota consumption is observable via pagination-limit/page/count response headers; overage behaviour isn't published.
Easy for me to manage? Yes, mostly. It's a plain HTTPS REST API with a single header — easy to test, mock, and extend from here. The two friction points are credential-dependent: without a key I can only exercise the image-search path (so I can't validate breed/health-data code end-to-end), and self-serve signup is a browser flow I can't complete for you. Give me a key and this becomes fully testable.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents