HTTP 404 · Invalid request
asset_not_found
Asset not found
HTTP status404
Retry
Nonot without a change
FamilyInvalid request
What the API answers
No asset exists with that category and key.
The message stays in English, like every API response: branch your script on error.code, which never changes.
What to do
No asset carries this key in this category. Check the category and the key, in lowercase.
Invalid request. The request itself was wrong: no file, a type or size that is not accepted, unreadable data, or something that does not exist. Fixed in the script that sends it.
Full response
JSON
{
"status": "error",
"error": {
"code": "asset_not_found",
"message": "No asset exists with that category and key.",
"docs": "https://aperture-app.preview.moncompanion.cloud/docs/errors/asset_not_found"
},
"meta": {
"request_id": "01K2R7M8QF3V9XZ4B6NCDT0YAH",
"api_version": "v1",
"duration_ms": 12,
"timestamp": "2026-10-27T14:32:08+00:00"
}
}The meta values are a sample. meta also carries app_version and commit, and a refusal may add error.details with the value at fault.
Codes of the same family
| HTTP | Code | What to do | Retry |
|---|---|---|---|
| 422 | no_file_providedNo file in the request | The request held no file. Send it in the file field of a multipart/form-data body, or as base64 to /api/v1/uploads/base64. | No |
| 415 | unsupported_media_typeFile type not accepted | This file type is not accepted. The type is read from the file's content, not from its extension: error.details.detected_mime says what was recognised. | No |
| 413 | file_too_largeFile too large | The file exceeds the size allowed for its type. error.details gives the size received and the maximum: shrink the file or compress it before sending. | No |
| 422 | invalid_base64Unreadable base64 | The base64 payload could not be decoded. Send bare base64, or a complete data URI such as data:image/png;base64,… | No |
| 422 | invalid_metadataMetadata is not valid JSON | The metadata field was not accepted. Send a valid JSON object, within the limits on size, depth and number of entries. | No |
| 422 | corrupt_uploadUnreadable file | The file could not be read as the type it claims to be: it is truncated or damaged. Send it again in full. | No |
| 404 | media_not_foundMedia not found | No media carries this identifier in your organisation, or it was deleted. Check the identifier the upload returned. | No |
| 404 | route_not_foundUnknown API path | No route answers this path. Check the URL and the API version against the reference. | No |
| 405 | method_not_allowedWrong HTTP method | This route exists, but not with this HTTP method. Use the one the reference gives. | No |
| 404 | asset_not_foundAsset not found | No asset carries this key in this category. Check the category and the key, in lowercase. | No |
| 404 | asset_version_not_foundAsset version not found | This asset has no version with this number. GET /api/v1/assets/{category}/{key} returns its full version history. | No |
| 404 | asset_category_not_foundCategory not found | No asset category carries this slug. Create it first, or check its spelling. | No |
| 409 | asset_category_existsCategory already exists | A category already carries this slug. Pick another one, or use the existing category. | No |
| 409 | asset_category_not_emptyCategory still holds assets | The category still holds assets. Delete them first: a deleted asset stays in the recycle bin for seven days, where it can still be restored, and keeps the category in use until it is erased. error.details.assets counts the live assets, error.details.trashed_assets those in the bin. | No |
| 422 | asset_rule_violatedFile breaks its category's rules | The file breaks a rule of its category. error.details names the rule and the expected value. | No |
| 409 | asset_version_currentVersion currently served | This version is the one the asset serves right now. Roll back to another version first, then delete this one. | No |
| 409 | asset_version_not_readyVersion not ready | This version is still processing, or its processing failed: it cannot be served. Wait for processing to finish, or pick another version. | No |