Limits and errors
The upload limit, file size, credits, and what each status code means.
Overview
The API has a few limits, set so one busy integration can't crowd out everyone else. This page lists them, then every status code the API sends back and what to do about each one.
When a request fails, the Msg field in the response says why in plain words. Log it: it is usually the quickest way to the fix.
Limits
| Limit | Amount |
|---|---|
| Uploads | 100 per organisation in any 24 hours |
| File size | 512MB per upload |
| Columns | 300 per file |
| File type | CSV only |
| API keys | 2 per person in each organisation |
| Credits | 1 per upload. A new table needs at least one credit left. |
| Tables | Your plan sets how many files your organisation can hold. |
The upload limit is shared. Every key in your organisation counts towards the same 100. Only uploads that succeed count.
The window rolls. It isn't reset at midnight. Each upload counts for 24 hours from when it was made, then frees its slot. If you hit the limit, the next slot opens 24 hours after your oldest upload in the window.
Listing, fetching and deleting tables don't count towards the upload limit, and don't use credits.
Status codes
| Code | Meaning | What to do |
|---|---|---|
200 | It worked. | Nothing. |
400 | Something in the request is missing or wrong: no ProjectID, an empty file, a file that isn't a CSV, or a file not marked as text/csv. | Check the fields and the file against Import data. |
401 | The X-API-Key header is missing, the key is wrong, or the key has been turned off. | Check the header, and that the key is Active in Settings, under API Access. |
403 | The key works, but its owner isn't allowed to do this. They can't reach that department, can't add or remove data in it, or can't see that table. | Ask an admin to check the key owner's access to the department. |
404 | The department or the table doesn't exist in this organisation. | Check the ProjectID and CardID. |
409 | The request clashes with the table's or the organisation's current state. The table is still being read, it comes from a connected system (when deleting), the organisation has run out of credits, or it holds as many files as its plan allows. | If a table is being read, wait and try again. For credits or the plan's file limit, talk to your admin. |
413 | The file is over 512MB. | Split the file, or send only the rows that changed. |
422 | Mira couldn't read the file. It has no headings, a heading Mira can't use, or more than 300 columns. | Fix the first row of the file, or split it into narrower files. |
429 | Your organisation has used its 100 uploads for the last 24 hours. | Wait for a slot to free up, then try again. |
500 | Something went wrong on Mira's side. | Try again later. If it keeps happening, contact support. |
Retrying
It is safe to retry a 429, a 500, or a 409 for a table that is still being read. Wait between tries, and wait longer each time.
Don't retry a 400, 401, 403, 404, 413 or 422 unchanged. The same request gets the same answer until you fix it.