DocumentationAPI v1
HTTP 422 · Invalid request

invalid_metadata

Metadata is not valid JSON

HTTP status422
Retry Nonot without a change
FamilyInvalid request

What the API answers

The metadata field is not valid JSON.

The message stays in English, like every API response: branch your script on error.code, which never changes.

What to do

The metadata field was not accepted. Send a valid JSON object, within the limits on size, depth and number of entries.

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": "invalid_metadata",
        "message": "The metadata field is not valid JSON.",
        "docs": "https://aperture-app.preview.moncompanion.cloud/docs/errors/invalid_metadata"
    },
    "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

Every error code