# requestSiteUpload

Source: <https://telegafirst.com/docs/api-op-requestsiteupload>
Locale: ru
releaseGitSha: 0bb11ef116e17ec64c802d5476eaff442e53d252
sourceContentDigest: 5efe7e9be1e2b19a64c856e0ca323668089d344a2980aa809926ae5c25788326
Version: 8

# requestSiteUpload

`POST /api/v1/tools/site/request-upload`

Request staged bundle upload URLs

## Авторизация и права

Scopes: ALL. Auth alternatives: OR; scopes внутри альтернативы: ALL.

| Поле | Значение |
| - | - |
| security.0.hubApiKey | \[] |
| security.1.hubBearer | \[] |
| securitySchemes.hubApiKey.in | "header" |
| securitySchemes.hubApiKey.name | "X-Api-Key" |
| securitySchemes.hubApiKey.type | "apiKey" |
| securitySchemes.hubBearer.scheme | "bearer" |
| securitySchemes.hubBearer.type | "http" |
| x-required-scopes | \["site:write"] |

## Параметры запроса

| Поле | Значение |
| - | - |
| 0.description | "Tenant, credential and handler-bound byte-shape replay key" |
| 0.in | "header" |
| 0.name | "Idempotency-Key" |
| 0.required | true |
| 0.schema | [0.schema](https://telegafirst.com/docs/schema-9ac136edb99a2063b3091602181c8d2022fdccb5b514991319d58544c2e57e95) |

## Тело запроса

| Поле | Значение |
| - | - |
| content.application/json.schema | [SiteUploadRequest](https://telegafirst.com/docs/schema-635f21e5ff0aacff2c05fcde63629a6122cb6a5622f78f158c8e93fc36863ba9) |
| required | true |

## Ответы

| Поле | Значение |
| - | - |
| 201.content.application/json.schema | [SiteUploadTicket](https://telegafirst.com/docs/schema-6d0b209d81ec5c5f21230e3a78672d6ec36f5142cb274cab5587141578773ab4) |
| 201.description | "Tenant site control-plane result" |
| 201.headers.X-Bot-Username.description | "Active bot username, when resolved" |
| 201.headers.X-Bot-Username.schema | [201.headers.X-Bot-Username.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 201.headers.X-Client-Slug.description | "Active tenant slug, when resolved" |
| 201.headers.X-Client-Slug.schema | [201.headers.X-Client-Slug.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 201.headers.X-RateLimit-Limit.description | "Effective request budget" |
| 201.headers.X-RateLimit-Limit.schema | [201.headers.X-RateLimit-Limit.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 201.headers.X-RateLimit-Remaining.description | "Remaining request budget" |
| 201.headers.X-RateLimit-Remaining.schema | [201.headers.X-RateLimit-Remaining.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 201.headers.X-RateLimit-Reset.description | "Unix window reset in seconds" |
| 201.headers.X-RateLimit-Reset.schema | [201.headers.X-RateLimit-Reset.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |

## Ошибки

| Поле | Значение |
| - | - |
| 400.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 400.description | "Invalid strict upload declaration or missing replay key" |
| 400.x-error-codes | \["VALIDATION\_ERROR","IDEMPOTENCY\_KEY\_REQUIRED"] |
| 401.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 401.description | "Missing, invalid, revoked or conflicting credential; surface JWT is refused" |
| 401.x-error-codes | \["INVALID\_API\_KEY"] |
| 403.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 403.description | "Missing scope, prohibited publishable credential or absent active bot" |
| 403.x-error-codes | \["INSUFFICIENT\_SCOPE","PUBLISHABLE\_KEY\_NOT\_ALLOWED","NO\_ACTIVE\_BOT"] |
| 404.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 404.description | "Host is not a live tenant UGC or verified custom domain" |
| 404.x-error-codes | \["NOT\_FOUND"] |
| 409.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 409.description | "Typed domain conflict or request in flight" |
| 409.x-error-codes | \["CONFLICT"] |
| 413.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 413.description | "Resource policy size or item-count limit exceeded" |
| 413.x-error-codes | \["PAYLOAD\_TOO\_LARGE","ITEM\_COUNT\_EXCEEDED"] |
| 422.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 422.description | "Replay mismatch; a path outside the permitted publication prefix or reserved on a tenant site host; a video over the per-video size of the plan (details.path, details.limitBytes); a bundle over the site size of the plan (details.limitBytes) or over the file count of a site, the same on every plan (details.limitFiles)" |
| 422.x-error-codes | \["IDEMPOTENCY\_KEY\_MISMATCH","SITE\_PATH\_OUTSIDE\_PUBLISHABLE\_PREFIX","SITE\_PATH\_RESERVED","SITE\_VIDEO\_TOO\_LARGE","SITE\_BUNDLE\_TOO\_LARGE","SITE\_TOO\_MANY\_FILES"] |
| 429.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 429.description | "Resource rate budget exceeded or unavailable, or the daily upload budget of the plan is spent: tickets, one per request whatever its file count (details.limitTickets, details.remainingTickets), and declared bytes (details.limitBytes, details.remainingBytes); details.retryAfter is the reset at UTC midnight. With remainingTickets 0 only that reset helps; with tickets left, a declaration within remainingBytes is issued today" |
| 429.headers.Retry-After.description | "Retry delay in seconds, when supplied by the limiter" |
| 429.headers.Retry-After.schema | [429.headers.Retry-After.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 429.x-error-codes | \["RATE\_LIMIT\_EXCEEDED","RATE\_LIMIT\_UNAVAILABLE","MINT\_QUOTA\_EXCEEDED"] |
| 500.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 500.description | "Unexpected internal failure" |
| 500.x-error-codes | \["INTERNAL\_ERROR"] |
| 503.content.application/problem+json.schema | [ProblemDetails](https://telegafirst.com/docs/schema-c4113f3de00d728702a8663612e2074cbe3e8b3bb70d2b0dee6f3503fe89bd41) |
| 503.description | "The daily upload budget could not be checked; no ticket was issued. Repeat after Retry-After" |
| 503.headers.Retry-After.description | "Retry delay in seconds, when supplied by the limiter" |
| 503.headers.Retry-After.schema | [503.headers.Retry-After.schema](https://telegafirst.com/docs/schema-00404e686415370f1711c4d7acfa2905444d3cf23cef2e10c47d445ebe690f96) |
| 503.x-error-codes | \["MINT\_QUOTA\_UNAVAILABLE"] |

## Дополнительные условия

| Поле | Значение |
| - | - |
| description | "Owner-only site:write. Canonical UGC host ({slug}.{ugc zone} in either zone) or connected verified custom host; tenant UGC on the main platform host is prohibited. Nonempty declared files; each includes path, integer nonnegative sizeBytes, contentType and optional references. mode defaults to merge: omitted bio, binary assets, gates and references are preserved. Explicit replace declares a complete snapshot and removes omitted files and rules. The issuer pins canonical host, mode and server-owned baseManifestDigest; caller base/client fields are forbidden. The facade checks tenant host, safe paths, dependencies, each video file against the per-video size of the plan (by the served type of its extension, before the bundle total), the full effective site quota and the daily upload budget before minting. Video files (.mp4, .webm) are accepted within that size. Every refusal names its limit in details. Signed PUTs target staging and bind Content-Length. Expire in 300 seconds. No secret approval gate." |
| operationId | "requestSiteUpload" |
| summary | "Request staged bundle upload URLs" |
| tags | \["site"] |
| x-idempotency.conflictStatus | 422 |
| x-idempotency.implementation | "global-cache" |
| x-idempotency.replayStatus | 201 |
| x-idempotency.required | true |
| x-idempotency.scope | \["client","credential","controller-handler","key"] |
| x-idempotency.ttlSeconds | 86400 |
| x-pagination.queryParameters | \[] |
| x-pagination.supported | false |
| x-scope-semantics | "ALL" |
