[{"data":1,"prerenderedAt":7},["ShallowReactive",2],{"docs-storage\u002Fobjects\u002Fhead":3,"docs-tabs-storage\u002Fobjects\u002Fhead":6},{"content":4,"lastmod":5},"## Object metadata\n\n`HEAD \u002Fv1\u002Fstorage\u002Fobjects\u002F:key`\n\nReturns the object's metadata in the response headers without a body. Use it to check whether an object exists and get its properties without downloading the content.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|----------|-----|:-----:|---------|\n| `key` (path) | string | yes | Object key. The `\u002F` characters in the key must be encoded: `users%2F42%2Favatar.png` |\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -I \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl -I \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf',\n  {\n    method: 'HEAD',\n    headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n  }\n)\nconst contentType = res.headers.get('content-type')\nconst size = res.headers.get('content-length')\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fstorage\u002Fobjects\u002Freports%2F2024%2Fannual.pdf',\n  {\n    method: 'HEAD',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\nconst contentType = res.headers.get('content-type')\nconst size = res.headers.get('content-length')\n```\n\n## Response fields\n\nThere is no response body. Metadata is returned in the headers.\n\n| Header | Description |\n|-----------|---------|\n| `Content-Type` | The object's content MIME type |\n| `Content-Length` | The object's size in bytes |\n| `ETag` | Content hash in quotes |\n\n## Response example\n\n```http\nHTTP\u002F1.1 200 OK\nContent-Type: application\u002Fpdf\nContent-Length: 303\nETag: \"dbaa5d4c5e4a709133830a8facd9fec8\"\n```\n\n## Error response example\n\n404 — object not found:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"STORAGE_OBJECT_NOT_FOUND\",\n    \"message\": \"Object reports\u002F2024\u002Fannual.pdf not found\"\n  }\n}\n```\n\n## Errors\n\nThe method is limited to 600 requests per minute per Bitrix24 account. All API keys of\nthe account share this budget.\nThe current limit is returned in `x-ratelimit-limit`; after a `429`, retry\nafter the delay in `Retry-After`.\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 401 | `MISSING_API_KEY` | API key not passed |\n| 403 | `STORAGE_SCOPE_REQUIRED` | The API key has no `vibe:storage` scope |\n| 404 | `STORAGE_OBJECT_NOT_FOUND` | No object found with the given key |\n| 410 | `STORAGE_OBJECT_DELETED` | The object was deleted |\n| 429 | `RATE_LIMITED` | The portal object-metadata read budget is exhausted |\n| 502 | `STORAGE_OBJECT_HEAD_FAILED` | Error accessing storage |\n| 502 | `STORAGE_OBJECT_MISSING_IN_BUCKET` | The object exists in the database but is missing from storage |\n\nFor the full list of general errors, see [Errors](\u002Fdocs\u002Ferrors).\n\n- **An app key with no employee session sees only the app-shared file.** Employees of an app use\n  logical names independently of each other, so multiple objects can share the same logical name. A request made with\n  an app key and NO `Authorization` header addresses the app-shared file; if the name is held solely by\n  per-employee files, the response is `404 STORAGE_OBJECT_NOT_FOUND`. To reach an employee's file, pass\n  that employee's session in `Authorization: Bearer`, or address the object by its identifier.\n\n## See also\n\n- [Objects](\u002Fdocs\u002Fstorage\u002Fobjects)\n- [List objects](\u002Fdocs\u002Fstorage\u002Fobjects\u002Flist)\n- [Download object](\u002Fdocs\u002Fstorage\u002Fobjects\u002Fget)\n- [Upload](\u002Fdocs\u002Fstorage\u002Fupload)\n","2026-10-23",{},1794739607469]