The MeowStreets API
Tools, sheets, bots and userscripts read the city through the API, with a key you make yourself. A key only ever reads: there is no way to train, fight, buy or do anything else with one. It shows a tool what you could already see on the pages, and nothing more.
Never give a tool your password. Give it a key, at the lowest level it needs, and revoke the key when you stop using the tool. Asking for a player's password breaks the terms.
Keys
Make a key under Account in the game. Name it after the tool you are giving it to, pick its level, type your password, and copy the key: it is shown once, and the city keeps only a fingerprint of it, so a lost key cannot be shown again, only replaced. You may hold 5 keys. Revoking one stops it at once. Changing your password does not revoke your keys. Resetting it from an emailed link, recovering the account with a recovery code, or staff signing the account out everywhere revokes them all.
| Level | Reads |
|---|---|
| Public | Who owns the key, any cat's page, any crew's page, and the city. |
| Self | Public, and your own cat: bars, battle stats, cash, status, cooldowns and Mews. |
| Crew | Self, and your crew's desk (the roster, chain, contracts, jobs running and the treasury's balance), if the crew's leader has opened it under Management, API access. |
Calling it
Every route is a GET under https://meowstreets.com/api/v1/ with the key in a header. Never put a key in the address, where it ends up in logs.
curl https://meowstreets.com/api/v1/me \
-H "Authorization: Bearer ms_your_key_here"
An answer is JSON: {"ok": true, "data": {…}, "at": 1762300000000}, where at is the server's clock. A refusal is {"ok": false, "error": {"code": "…", "message": "…"}}. Every time is milliseconds since 1970, UTC, and a time that has passed or does not apply is null. Any website may call the API from a browser, because the key is the whole credential.
Keep track of a cat or a crew by its id, never its name. A cat may change its name, and the name it gives up is anyone's to take; previous_names on a cat says what it was called before.
Routes
| Route | Level | Returns |
|---|---|---|
/v1/key | Public | The key itself: its name, level, owner (id and name) and the rate limit. |
/v1/city | Public | The server time, how many cats have the city open, and when the day (and every crew chain) ends at 00:00 UTC. |
/v1/cat/<id> | Public | What a cat's page shows anyone: name and the names it went by before, level, crew and rank, status, when it last did anything (in the page's own words, such as 3 hours ago), home, companion, the record, and its place in the city's ranking as the Players list prints it. |
/v1/crew/<id> | Public | What a crew's page shows anyone: leader, standing, best chain, members and the perks it holds. |
/v1/me | Self | Your own cat: bars with when each is full, battle stats, cash and bank, status, cooldowns, gym, home, crew and unread Mews. |
/v1/me/mews | Self | Your Mews, newest first, a page at a time. Takes lane and before as the Mews page does. |
/v1/crew | Crew | Your crew's desk: the roster with each cat's status, last action, today's chain links, donations and jobs; the chain; respect, standing and the treasury's balance; the jobs running and who is on them; this week's contracts. Only once the leader has opened it. |
Limits
A cat's keys share 60 reads a minute between them, however many keys and tools there are, and one address may make 300 reads a minute whoever's keys it holds. One read a minute of /v1/me is enough for any timer: each bar comes with full_at, so count down from that instead of asking again. Reading never changes your cat or gives it anything, so polling more often is no help in play.
Errors
| Code | Status | Means |
|---|---|---|
key_missing | 401 | No Authorization: Bearer header. |
key_invalid | 401 | Not a key the city knows, or one that was revoked. |
suspended | 403 | The key's owner is suspended. |
key_level | 403 | The key's level does not reach the route. |
crew_none | 404 | The key's cat is not in a crew. |
crew_closed | 403 | The crew's leader has not opened the desk to keys. |
not_found | 404 | No such route, cat or crew. |
bad_request | 400 | The request could not be read. |
rate_limited | 429 | Over 60 reads a minute for the cat, or 300 for the address. Wait for Retry-After. |
method | 405 | Anything but GET. |
server_error | 500 | Something broke on our side. |
The rules
- The API reads. Nothing that plays for you is allowed, through the API or around it.
- Say what your tool keeps and who sees it. A crew tool shows crewmates' data only to that crew.
- Do not share a key in public. Anyone holding one reads what its level allows.
- Chat is not in the API and will not be.
Abuse is a breach of the terms like any other, and can cost the account. Questions and requests go to support@meowstreets.com or the API thread in the game's Discord.