Перейти к содержанию
Справочник APIPDF / documents

PDF / documents

Документы: поддержанные форматы, способы передачи и ограничения выбранного API.

Протокол модели

Base64 PDF

Claude Messages принимает PDF в блоке document с base64-источником с серверным промптом и без него. Для большого PDF выбирайте Opus/Sonnet с контекстом 1M и соблюдайте лимиты ниже. Chat Completions и Responses PDF не принимают.

python
import base64
import anthropic

with open("report.pdf", "rb") as f:
    pdf_b64 = base64.standard_b64encode(f.read()).decode("utf-8")

client = anthropic.Anthropic(
    api_key=KEY,
    base_url="https://api.guardrelay.ai",
)
message = client.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {"type": "document", "source": {
                "type": "base64",
  • PDF должен быть стандартным и без пароля/шифрования.
  • Весь HTTP-запрос вместе с base64 должен укладываться в 12 MiB.
  • При применённом серверном промпте дополнительно действует общий media-бюджет: до 4 элементов, до 4 MiB декодированных данных на элемент и до 8 MiB суммарно.
  • Без применённого серверного промпта допускается до 600 страниц только при 1M context window; при меньшем окне — максимум 100 страниц. При применённом серверном промпте независимо действует отдельный лимит media 4 MiB на элемент.
  • Большой или плотный документ лучше разбить на несколько запросов.
  • PDF, а также text/content document sources учитываются как input tokens. Некорректный или слишком большой PDF с применённым серверным промптом отклоняется до платной обработки.

Документ в tool_result

При применённом серверном промпте тот же document block можно вложить в массив tool_result.content. Сохраняйте исходный tool_use_id; PDF должен иметь media_type: "application/pdf" и base64 source. Лимиты те же, что для обычного user message.

Kimi, Composer и Grok

  • Kimi. Документы работают по-другому: файл сначала загружается запросом POST /v1/files, а затем упоминается в чат-запросе блоком input_file. Форматы, лимиты, квота и срок жизни файла разобраны на странице Kimi: Chat Completions.
  • Composer и Grok. Документов нет. Блок документа или файла в content не распознаётся и даёт локальный 400 до списания. Нужный текст кладите в сообщение обычным текстом, помня про окно 200K у Composer и 256K у Grok 4.7 и 500K у Grok 4.6.

Codex Files

На отдельном Base URL Codex подтверждены загрузка, список, метаданные, скачивание и удаление файлов: POST /codex/v1/files, GET /codex/v1/files, GET /codex/v1/files/{file_id}, GET /codex/v1/files/{file_id}/content и DELETE /codex/v1/files/{file_id}.

bash
curl https://api.guardrelay.ai/codex/v1/files \
  -H "Authorization: Bearer $GUARD_API_KEY" \
  -F "purpose=user_data" \
  -F "file=@notes.txt;type=text/plain"
  • Файл видит только тот же владелец; смена собственного ключа не переносит его другому пользователю.
  • Хранилище принимает файл до 512 MiB. Прямая подстановка сохранённого file_id в input_file ограничена 50 MiB.
  • Назначение purpose должно быть одним из: assistants, batch, evals, fine-tune, user_data, vision.
  • В Responses сохранённый файл указывается блоком input_file с file_id; удалённый, истёкший или чужой id недоступен.

PDF и MP4 через GLM Flash

glm-5.3-flash читает base64 PDF во всех трёх API. MP4 подтверждён только через Chat Completions. Отдельная предварительная загрузка файла не нужна и не опубликована.

ФорматChatMessagesResponses
PNG✓✓✓
PDF✓✓✓
MP4✓——

Chat PDF:

json
{
  "type": "file",
  "file": {
    "filename": "report.pdf",
    "file_data": "data:application/pdf;base64,<base64>"
  }
}

Messages PDF:

json
{
  "type": "document",
  "source": {
    "type": "base64",
    "media_type": "application/pdf",
    "data": "<base64>"
  }
}

Responses PDF:

json
{
  "type": "input_file",
  "filename": "report.pdf",
  "file_data": "data:application/pdf;base64,<base64>"
}

Chat MP4:

json
{
  "type": "video_url",
  "video_url": {"url": "data:video/mp4;base64,<base64>"}
}

Guard не публикует отдельный предел размера файла для GLM. Учитывайте предел вашего HTTP-клиента и проверяйте нужный реальный файл до запуска пользовательского потока.

PDF в Gemini

Gemini читает PDF во всех трёх API: встроенными данными base64 или ссылкой https, по которой файл скачивает сам Google.

APIБлок PDF
Messagesdocument с source.type: "base64" или source.type: "url" и адресом https в url
Chat Completionsfile с file_data (data-адрес или base64 PDF) или file_url (адрес https) и filename
Responsesinput_file с file_data или file_url и filename

Chat PDF:

json
{
  "type": "file",
  "file": {
    "filename": "report.pdf",
    "file_data": "data:application/pdf;base64,<base64>"
  }
}

Messages PDF:

json
{
  "type": "document",
  "source": {
    "type": "base64",
    "media_type": "application/pdf",
    "data": "<base64>"
  }
}

Responses PDF:

json
{
  "type": "input_file",
  "filename": "report.pdf",
  "file_data": "data:application/pdf;base64,<base64>"
}

PDF в Muse

Muse читает PDF, переданный встроенными данными base64: блоком document в Messages или input_file в Responses.

Разделы

На этой странице