---
title: "Authorize one exact media upload to the owner’s granted AI consciousness."
method: POST
path: "/v1/request_external_media_upload"
tags: ["External Authorization"]
---

# Authorize one exact media upload to the owner’s granted AI consciousness.

`POST /v1/request_external_media_upload`

## Request

- Base URL: `https://partner.mindupload.app`
- URL: `https://partner.mindupload.app/v1/request_external_media_upload`
- Auth: API key in header `X-Partner-Key`

## Request body

- object
  - `preferred_language` string, nullable: BCP-47-ish language code (e.g. 'en', 'zh-cn') for localized messages.
  - `access_token` string, required: Opaque grant token accepted only by grant inspection and external clone invocation; store it as a secret and never expose it to users.
  - `installation_id` string, required: Your stable opaque identifier for this app installation.
  - `external_subject` string, required: Your stable opaque identifier for the person authorizing this installation.
  - `clone_id` string, required: AI consciousness id as returned by clone operations.
  - `idempotency_key` string, required: A stable opaque event key that makes exact retries return the same outcome.
  - `filename` string, required
  - `content_type` 'application/ogg' | 'audio/3gpp' | 'audio/aac' | 'audio/m4a' | 'audio/mp3' | 'audio/mp4' | 'audio/mpeg' | 'audio/ogg' | 'audio/wav' | 'audio/wave' | 'audio/webm' | 'audio/x-m4a' | 'audio/x-wav' | 'image/gif' | 'image/heic' | 'image/heif' | 'image/jpeg' | 'image/png' | 'image/webp' | 'video/3gpp' | 'video/avi' | 'video/mp4' | 'video/ogg' | 'video/quicktime' | 'video/webm' | 'video/x-flv' | 'video/x-m4v' | 'video/x-matroska' | 'video/x-ms-wmv' | 'video/x-msvideo', required
  - `file_size_bytes` integer, required
  - `media_type` 'image' | 'video' | 'audio', required: The kind of media: `image`, `video`, or `audio`.

## Response `200`

Result envelope — check the success field.

- object
  - `success` boolean: Whether the call succeeded.
  - `error_message` string, nullable: Human-readable reason when success is false.
  - `error_code` string
  - `upload_id` string, nullable: Multipart upload session id returned by `request_multipart_upload`.
  - `presigned_url` string, nullable: Temporary URL where the client uploads the file or part.
  - `content_type` string, nullable
  - `file_size_bytes` integer, nullable
  - `expires_at` integer, nullable: UNIX timestamp when this resource or capability expires.
  - `idempotent_replay` boolean, nullable: True when this response came from an existing durable receipt.
  - `required_headers` object, nullable: Send these exact headers with the PUT, including the signed If-None-Match: * condition. An existing object answers 412; inspect/start its stored analysis to recover a lost acknowledgement, never remove the condition.

## Other responses

- `400`: Invalid request payload.
- `401`: Missing or invalid partner key.
- `403`: Partner is not authorized for this operation.
- `429`: Rate limit exceeded — retry later.
- `500`: Internal server error.

---

[API](https://skmtc.dev/mindupload/apis/mind-upload-partner-api.md) · [All operations](https://skmtc.dev/mindupload/apis/mind-upload-partner-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mindupload/apis/mind-upload-partner-api/revisions/0371bdf78533?raw)
