ГлавнаяДокументация
Меню документации — Файлы: приём и генерация

Файлы: приём и генерация

Через Ranvik можно загружать файлы для модели и забирать сгенерированные ей файлы.

Важно — TTL 1 день. Проксируемые файлы эфемерны: хранятся максимум 24 часа, потом удаляются. Не рассчитывайте на долгое хранение — забирайте сразу.

Приём файлов

OpenAI: POST /v1/files (multipart). Claude: POST /v1/anthropic/files. Gemini: POST /v1/google/files.

curl https://api.ranvik.ru/v1/files \
  -H "Authorization: Bearer rk_live_..." \
  -F purpose=assistants \
  -F file=@./report.pdf

В ответе — file_id. Дальше ссылайтесь на него в /v1/responses / /v1/chat/completions как input_file.

Загруженные файлы нельзя скачать обратно. Скачивается только то, что сгенерировала модель (контейнерные файлы OpenAI — см. ниже). Gemini контент-скачивания не имеет вообще (/content → 400).
Gemini id. Gemini возвращает имя как files/<id>. В наши /v1/google/files/... можно слать и полную форму files/<id>, и голый <id> — нормализуем сами.

Генерация файлов (code interpreter)

curl https://api.ranvik.ru/v1/responses \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-5",
    "input": "Построй CSV с числами 1..100 и сохрани файл",
    "tools": [{"type": "code_interpreter", "container": {"type": "auto"}}]
  }'

В ответе output[] ищите элемент type:"code_interpreter_call" — там container_id и outputs[].file_id. Скачать файл:

curl https://api.ranvik.ru/v1/containers/{container_id}/files/{file_id}/content \
  -H "Authorization: Bearer rk_live_..." --output result.csv

Какая модель что умеет

  • Приём файлов: OpenAI (/v1/files), Claude (/v1/anthropic/files), Gemini (/v1/google/files)
  • Генерация файлов: OpenAI/xAI — code interpreter через /v1/responses (файлы тянутся из контейнера: /v1/containers/{cid}/files/{fid}/content); Claude — code execution, файлы как file_id; Gemini — инлайн base64 в ответе.

Native vs Compat — важно для файлов

Неочевидное: кросс-вендор путь /v1/chat/completions с Claude/Gemini-моделью транслирует ответ в OpenAI-формат. Это удобно, но vendor-специфичные блоки (например сгенерённые code-execution файлы) — лучшая совместимость на нативных эндпоинтах, где мы работаем чистым прокси и НИЧЕГО не теряем:
  • OpenAI / xAIPOST /v1/responses (нативный, pure-proxy)
  • ClaudePOST /v1/messages (нативный Anthropic, pure-proxy — все content-блоки и file_id сохраняются 1:1)
  • GeminiPOST /v1/google/generateContent (нативный, pure-proxy — inlineData / code execution / fileData приходят как есть)
curl https://api.ranvik.ru/v1/google/generateContent \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash",
    "contents": [{"role":"user","parts":[{"text":"Построй график и сохрани PNG"}]}],
    "tools": [{"codeExecution": {}}]
  }'

Сгенерённый Gemini файл вернётся инлайн в candidates[0].content.parts[].inlineData (base64) — отдельного скачивания не нужно. На кросс-вендор пути (/v1/chat/completions + claude/gemini) сгенерённые файлы выносятся в choices[0].message.generated_files; Claude-файлы качаются через /v1/anthropic/files/{id}/content. Нужна полная точность вендора — используйте нативный эндпоинт.

Лимиты и биллинг

  • Квоты per-ключ: число файлов и сессий code interpreter в минуту.
  • Хранение и скачивание файлов в текущей версии не тарифицируются.
  • Ошибки: 404 — чужой/несуществующий id; 429 quota_exceeded — превышены квоты.