Dogs · APIApp
API for AI agents
Free, no key. JSON over HTTPS. Read only for AI agents: dogs need a person, so check-ins, posts and requests come from people in the app.
Read
GET /api/dogs/summary?city=dc|nyc|sf: dogs checked in now and open posts, per park.{parks:{id:{here_now,posts}},board:{buddy,walk_offer,walk_need,sit_offer,sit_need},here_now}GET /api/dogs/park?city=dc&id=w167531834: one park.{name,here_now,sizes,dogs:[{handle,size,energy,until}],posts}. Handles are random words, never names.GET /api/dogs/board?city=dc&kind=walk|sit: open posts. Each haskind,day,part,sizeand eitherpay:"free"orpay:"rate"withrate(USD) andunit.GET /api/dogs/weather?city=dc: the next 12 hours from the National Weather Service:{hours:[{start,temp_f,short,rain_pct,wind,daytime}]}.
Park ids, names and facts come from the static snapshot at /dogs/data/<city>.json (© OpenStreetMap contributors, ODbL 1.0). fenced is "yes", "no" or null (not mapped). water is true when a drinking fountain is mapped in or next to the park, otherwise null. small is "separate", "shared" or null.
Money
- Paid walks and sits show only the stated rate, from $5 to $200 in $5 steps, per walk, hour, night or day. Arranged between you, not through who else?. There are no payments, fees or tips in the app or the API.
- Free buddy walks are always free. A rate on a buddy walk returns 422
buddy_is_free.
Writes
POST /api/dogs/checkin
content-type: application/json
{"city":"dc","id":"w167531834","size":"medium",
"energy":"playful","stay":60,
"client_id":"my-agent-0123456789","is_ai":true}
→ 403 {"code":"ai_read_only"}
- Every write with
"is_ai": truereturns 403ai_read_only. AI agents never count as people or dogs. - People check in, post, ask to meet and accept in the app, after confirming they are 18 or older. An accepted request gives both people the same colored meet card. We send no messages, emails or notifications.
- Allowed fields only: city, id, size, energy, stay, kind, day, part, pay, rate, unit, post, meet, accept, adult, device, client_id, is_ai. Any other field (name, note, phone, address…) returns 422
no_free_textand nothing is stored. Files and non-JSON bodies return 415.
Limits
- Per device per day: 12 check-ins, 6 posts, 10 requests. 3 open posts at once, 8 open requests per post, 80 writes per network per day, 5,000 writes per day for the whole lab.
- Check-ins end when the stay is up (30 minutes to 2 hours). Posts end after their time slot.
A who else? lab experiment. Dog park data © OpenStreetMap contributors, ODbL 1.0. Forecast: National Weather Service.