Перейти к содержимому

uploadFile

Обновлено 17 октября 2026

Загружает файл в хранилище Gratio и возвращает ссылку на него. Удобно, когда один файл уходит многим: загрузите его один раз и отправляйте ссылкой через sendFileByUrl — Gratio возьмёт файл из своего хранилища, без повторной загрузки.

Запрос POST /waInstance{idInstance}/uploadFile/{apiTokenInstance}
Тело сам файл, до 100 МБ
Каналы MAX, Telegram, WhatsApp, почта

Метод ничего не отправляет в мессенджер: он работает, даже когда канал не на связи или на паузе.

Параметры

Параметры — в заголовках запроса:

Заголовок Обязательный Описание
Content-Type да тип файла: image/jpeg, application/pdf, audio/ogg. Не application/json и не multipart/form-data — такое тело Gratio разбирает как JSON или форму
GA-Filename нет имя файла латиницей; без него — file. Можно и X-Filename

Пример запроса

Загрузить афишу:

curl

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/uploadFile/$GRATIO_TOKEN" \
  -H 'Content-Type: image/jpeg' -H 'GA-Filename: poster.jpg' \
  --data-binary @poster.jpg

Python

import os
import requests

BASE = f"{os.environ['GRATIO_URL']}/waInstance{os.environ['GRATIO_ID']}"
TOKEN = os.environ["GRATIO_TOKEN"]

url = f"{BASE}/uploadFile/{TOKEN}"
headers = {"Content-Type": "image/jpeg", "GA-Filename": "poster.jpg"}
with open("poster.jpg", "rb") as f:
    response = requests.post(url, data=f, headers=headers, timeout=120)
print(response.status_code, response.json())

Node.js

import { readFile } from "node:fs/promises";
const { GRATIO_URL, GRATIO_ID, GRATIO_TOKEN } = process.env;
const base = `${GRATIO_URL}/waInstance${GRATIO_ID}`;

const url = `${base}/uploadFile/${GRATIO_TOKEN}`;
const response = await fetch(url, {
  method: "POST",
  headers: { "Content-Type": "image/jpeg", "GA-Filename": "poster.jpg" },
  body: await readFile("poster.jpg"),
});
console.log(response.status, await response.json());

PHP

<?php
$base = getenv('GRATIO_URL') . '/waInstance' . getenv('GRATIO_ID');
$url = $base . '/uploadFile/' . getenv('GRATIO_TOKEN');

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: image/jpeg', 'GA-Filename: poster.jpg'],
    CURLOPT_POSTFIELDS => file_get_contents('poster.jpg'),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 120,
]);
$response = json_decode(curl_exec($ch), true);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;
print_r($response);

Пример ответа

Ответ 200 OK:

{"urlFile": "https://api.gratio.net/upload/7100000001/5f2c8e1a9b3d4c7e6a0f1b2c/…/poster.jpg"}

Поля ответа

Поле Тип Описание
urlFile string ссылка на файл в хранилище Gratio. Подписанная, без токена: по ней файл можно и скачать

Ещё примеры

Отправить загруженный файл

Передайте urlFile из ответа в sendFileByUrl — каждому получателю своим запросом:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/sendFileByUrl/$GRATIO_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "chatId": "79991234567@c.us",
    "urlFile": "https://api.gratio.net/upload/7100000001/5f2c8e1a9b3d4c7e6a0f1b2c/…/poster.jpg",
    "caption": "Открытый урок в субботу, 11:00"
  }'

Та же ссылка подходит:

PDF

Документ загружается так же, меняются тип и имя:

curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/uploadFile/$GRATIO_TOKEN" \
  -H 'Content-Type: application/pdf' -H 'GA-Filename: schedule.pdf' \
  --data-binary @schedule.pdf

Ошибки

Код code Когда Что делать
400 file_empty тело пустое или пришло формой multipart/form-data передать сам файл с его Content-Type
413 — файл больше 100 МБ уменьшить файл

Что дальше

Была ли статья полезна?