Генератор и конструктор curl-команд
Создавайте curl-команды прямо в браузере: метод, заголовки, авторизация, тело — готовая команда мгновенно. Пресеты для Bearer, POST JSON, загрузки файлов. Бесплатно, приватно, без регистрации.
Что такое curl-команда?
curl — это инструмент командной строки для передачи данных по HTTP и десяткам других протоколов. Команда curl состоит из имени бинарного файла, набора флагов и URL — например `curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'`. Поскольку curl входит в поставку практически каждой системы Linux, macOS и современного Windows, это универсальный способ протестировать API, воспроизвести запрос из документации или проверить работоспособность сервиса из CI-скрипта. Краткость, которая делает его мощным, одновременно затрудняет запоминание — именно для этого и нужен визуальный конструктор.
Каждая curl-команда имеет одинаковую анатомию. Метод (`-X GET`, `-X POST`, …) задаёт HTTP-глагол, по умолчанию равный GET. URL — это эндпоинт, к которому после `?` добавляются параметры запроса. Заголовки (`-H 'Key: Value'`, повторяемые) несут метаданные: `Accept` и `Content-Type`. Аутентификация — это просто специальный заголовок: `-H 'Authorization: Bearer …'` для токена, `-u user:pass` для Basic auth или кастомный `-H 'X-API-Key: …'`. Тело (`-d` для сырых или form-данных, `-F` для multipart и загрузки файлов) несёт payload. Наконец, флаги параметров `-L` (следовать редиректам), `-i` (включить заголовки ответа) и `-v` (подробный вывод) определяют поведение. Этот инструмент отображает каждую из этих частей как поле формы и перестраивает команду в режиме реального времени.
Используйте генератор curl-команд, когда иначе пришлось бы мучиться с кавычками, забывать заголовок `Content-Type` в JSON POST или вручную собирать multipart-загрузку. Конструктор правильно экранирует одинарные кавычки для shell, кодирует строку запроса и добавляет правильные заголовки для каждого типа тела — и вы получаете команду, которой можно доверять. Исчерпывающий справочник по флагам с 40+ исполняемыми примерами читайте в сопроводительной шпаргалке по curl; для кодирования сложных значений строки запроса используйте наш URL-энкодер.
Всё происходит в вашем браузере. Ваши токены, учётные данные, URL и тела запросов собираются клиентским JavaScript и никуда не отправляются — вы можете строить команды для реальных боевых эндпоинтов с реальными API-ключами, и ничто не покинет ваше устройство.
# Plain GET — curl defaults to GET
curl https://api.example.com/users
# GET with a Bearer token (auth is just a header)
curl https://api.example.com/me \
-H 'Authorization: Bearer YOUR_TOKEN'
# POST a JSON body — note the Content-Type header
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada","role":"admin"}'
# Multipart file upload — '@' reads the file from disk
curl -X POST https://api.example.com/upload \
-F 'file=@report.pdf' \
-F 'title=Q3 report' Ключевые возможности
Визуальный конструктор запросов
Задайте весь запрос через поля формы — метод, URL, параметры запроса, заголовки, авторизация, тело и параметры — вместо запоминания порядка флагов и кавычек. Больше не нужно гадать, куда поставить URL: до или после `-d`.
Живая команда с копированием и экспортом
curl-команда перестраивается при каждом нажатии клавиши внизу страницы. Скопируйте её в буфер обмена одним кликом или выполните Export .sh для скачивания исполняемого shell-скрипта, который можно сразу добавить в репозиторий или CI-задание.
Полная поддержка аутентификации
Bearer-токен, Basic auth (`-u user:pass`) и кастомные заголовки API-ключа — каждый в точном формате, который ожидают серверы. Выберите схему, вставьте учётные данные, и правильный заголовок `Authorization` или кастомный заголовок будет сгенерирован за вас.
Все типы тела запроса
Сырой JSON (с автоматически добавляемым заголовком `Content-Type`), поля формы `application/x-www-form-urlencoded` и `multipart/form-data`-загрузки, где любое поле можно переключить в файл с префиксом `@`.
Шесть пресетов в один клик
GET с Bearer, POST JSON, загрузка формы, Basic auth, Download `-o` и Verbose debug — заполняют всю форму одним нажатием. Начните с рабочего запроса для самых распространённых задач API и настройте его.
Многострочный и однострочный вывод
Переключайтесь между компактной однострочной командой для быстрой вставки и многострочной версией с обратными слешами, удобной для чтения в скрипте или review в pull request. Одна команда — два формата.
100% приватность в браузере
Токены, URL, заголовки и тела запросов собираются полностью на стороне клиента и никогда не покидают ваше устройство — проверьте это во вкладке Network. Безопасно для боевых эндпоинтов и живых учётных данных без какой-либо утечки данных.
Создан для работы с DevTools
Разработан для повседневного цикла тестирования API и воспроизведения запросов из браузерных DevTools через «Copy as cURL». Вкладка Convert, которая парсит вставленную curl-команду в fetch, requests, Go, PHP, Ruby и Node.js, появится в следующем релизе.
Альтернативы curl и HTTP-клиенты
HTTPie
CLI, человекопонятный синтаксисСовременный CLI с цветным выводом и более кратким синтаксисом (`http POST api.example.com/users name=Ada`). По умолчанию устанавливает JSON `Content-Type`. Удобнее для интерактивного использования; curl выигрывает по повсеместности и переносимости в скриптах.
wget
CLI, ориентирован на скачиваниеЛучший выбор для рекурсивного скачивания и зеркалирования сайтов; по умолчанию следует редиректам и повторяет попытки. Слабее curl для произвольных методов, кастомных заголовков и тестирования API. Часто предустановлен вместе с curl на Linux.
Postman
GUI-приложениеПолноценный GUI для создания, сохранения и совместного использования запросов с коллекциями, окружениями и командной синхронизацией. Отлично подходит для исследования API; поддерживает импорт/экспорт curl. Громоздкее однострочной команды для быстрых проверок или CI.
Insomnia
GUI-приложениеБолее лёгкая open-source альтернатива Postman с чистым конструктором запросов и импортом/экспортом curl. Хорошо для организации API-запросов; как и Postman, избыточен для одного скриптового вызова.
fetch() / requests
HTTP-клиенты в кодеJavaScript `fetch()` и Python `requests` — это то, как вы делаете вызов из кода приложения. Сначала создайте и проверьте запрос как curl, затем переведите его — предстоящая вкладка Convert сгенерирует эквивалентный код на fetch, requests и других клиентах.
Примеры curl-команд
Простой GET-запрос
curl https://api.example.com/users
Без флага метода curl по умолчанию использует GET. Это простейший возможный запрос — получить ресурс и вывести тело ответа в терминал. Добавьте параметры запроса в конструкторе, и они автоматически кодируются и добавляются к URL (`?page=2&limit=50`).
GET с Bearer-токеном
curl https://api.example.com/me \ -H 'Authorization: Bearer YOUR_TOKEN'
Самый распространённый аутентифицированный вызов REST API. Пресет Bearer auth добавляет заголовок `Authorization: Bearer …` за вас. Чтобы проверить содержимое JWT перед отправкой, вставьте токен в наш декодер JWT.
POST с JSON-телом
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada","role":"admin"}' Классика curl POST-запроса: тип тела JSON устанавливает `-X POST`, добавляет заголовок `Content-Type: application/json` и передаёт данные через `-d`. Для форматирования ответов API используйте наш форматировщик JSON.
POST-форма (urlencoded)
curl -X POST https://api.example.com/login \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'username=ada&password=s3cret'
Классическая HTML-форма. Каждая пара `-d field=value` объединяется через `&` и отправляется как `application/x-www-form-urlencoded`. curl кодирует спецсимволы; добавляйте поля в секции тела формы, и инструмент соберёт строку за вас.
Multipart-загрузка файла
curl -X POST https://api.example.com/upload \ -F 'file=@report.pdf' \ -F 'title=Q3 report'
Команда загрузки файла через curl использует `-F` для `multipart/form-data`. Добавьте `@` перед именем, чтобы прикрепить файл с диска; поля файлов и текста можно свободно смешивать. curl автоматически задаёт boundary и `Content-Type` — никогда не устанавливайте их вручную.
Скачивание в файл
curl -L -o archive.zip \ https://example.com/files/archive.zip
Сохраните тело ответа в именованный файл с помощью `-o`, а `-L` следует редиректам к реальному URL загрузки (часто используется с CDN и ссылками на release-assets). Используйте `-O` вместо `-o`, чтобы сохранить файл с именем сервера.
Basic-аутентификация
curl -u ada:s3cret \ https://api.example.com/private
curl basic auth использует `-u user:pass`; curl Base64-кодирует учётные данные в заголовок `Authorization: Basic …`. Всегда используйте Basic auth через HTTPS — Base64 является кодированием, а не шифрованием, и легко обратим.
Отладка с verbose
curl -v -i https://api.example.com/health
Когда запрос ведёт себя неожиданно, `-v` выводит полную строку запроса, все отправленные и полученные заголовки, а также TLS-рукопожатие; `-i` включает заголовки ответа в вывод тела. Первое, к чему стоит обратиться, когда API возвращает неверный статус-код.
Как создать curl-команду
- 1
Выберите HTTP-метод
Выберите GET, POST, PUT, PATCH, DELETE, HEAD или OPTIONS. curl по умолчанию использует GET; выбор POST или другого глагола добавляет `-X METHOD` к сгенерированной команде. Или нажмите пресет, чтобы задать метод и подходящее тело одним кликом.
- 2
Введите URL и параметры запроса
Введите URL запроса (например, `https://api.example.com/users`). Добавляйте параметры запроса в виде пар ключ/значение, и инструмент автоматически кодирует их и добавляет `?key=value&…` к URL — ручное кодирование не нужно.
- 3
Добавьте заголовки и аутентификацию
Добавляйте заголовки запроса в виде пар ключ/значение, затем выберите схему авторизации: None, Bearer-токен, Basic (логин/пароль) или кастомный заголовок API-ключа. Правильный заголовок `Authorization` или кастомный заголовок будет сгенерирован в точном формате, который ожидает сервер.
- 4
Задайте тело запроса
Для POST/PUT/PATCH выберите тип тела: вставьте сырой JSON (заголовок `Content-Type` добавляется за вас), создайте urlencoded-поля формы или соберите multipart-загрузку и переключите любое поле в файл с префиксом `@`.
- 5
Включите нужные параметры
Активируйте нужные флаги — следовать редиректам (`-L`), небезопасный TLS (`-k`), подробный вывод (`-v`), включить заголовки (`-i`), сжатие (`--compressed`), сохранение в файл (`-o`), таймаут соединения или прокси (`-x`). Каждое переключение обновляет команду в реальном времени.
- 6
Скопируйте, экспортируйте или сбросьте
Скопируйте готовую команду, выполните Export .sh для скачивания в виде скрипта или Reset для сброса формы. Используйте переключатель Multi-line для выбора между однострочным и многострочным форматом перед копированием.
Частые ошибки curl
Отсутствие -X при методе с телом
Отправка тела с `-d` подразумевает POST, но если нужен PUT или PATCH, необходимо явно указать это с помощью `-X`. Без этого тело отправляется как POST, и сервер возвращает неверный статус или отклоняет запрос.
# Ожидался PATCH, но -d один подразумевает POST
curl -d '{"role":"admin"}' \
https://api.example.com/users/7 # Явно задайте глагол
curl -X PATCH -d '{"role":"admin"}' \
-H 'Content-Type: application/json' \
https://api.example.com/users/7 Отсутствие Content-Type при JSON POST
Отправка JSON с `-d` НЕ устанавливает заголовок `Content-Type` — curl по умолчанию использует `application/x-www-form-urlencoded`. Большинство API при этом не могут парсить тело и возвращают 400 или 415. Всегда добавляйте тип содержимого JSON (или используйте пресет JSON body, который добавляет его за вас).
# Сервер видит urlencoded, а не JSON — 400/415
curl -X POST https://api.example.com/users \
-d '{"name":"Ada"}' # Объявите тип содержимого JSON
curl -X POST https://api.example.com/users \
-H 'Content-Type: application/json' \
-d '{"name":"Ada"}' Одинарные и двойные кавычки: экранирование
Внутри двойных кавычек оболочка раскрывает `$`, обратные кавычки и `!`, искажая JSON или ломая payload с `$variable`. Одинарные кавычки передают тело буквально. Используйте одинарные кавычки для JSON-тел; переходите на двойные только в `cmd.exe`, который не поддерживает одинарные кавычки.
# $name раскрывается оболочкой в пустую строку
curl -d "{\"user\":\"$name\"}" \
https://api.example.com/users # Одинарные кавычки передают тело буквально
curl -d '{"user":"$name"}' \
https://api.example.com/users Использование -d в GET-запросе
Добавление `-d` к запросу молча превращает его в POST. Если нужен GET с параметрами запроса, укажите их в URL (или используйте `-G`, чтобы данные из `-d` перешли в строку запроса). `-d` в GET — одна из самых частых причин «мой GET не работает».
# -d делает это POST, а не GET curl -d 'page=2&limit=50' \ https://api.example.com/users
# Строка запроса в URL сохраняет метод GET curl 'https://api.example.com/users?page=2&limit=50'
Продолжение строки в Windows: ^ против \
Обратный слеш (`\`) продолжает команду на следующей строке в bash, Git Bash и WSL. В `cmd.exe` символ продолжения — каретка (`^`), а в PowerShell — обратная кавычка (`` ` ``). Вставка команды с обратными слешами в `cmd` сломает её — переключите инструмент в однострочный режим для Windows `cmd`.
:: cmd.exe — обратный слеш не является символом продолжения
curl -X POST https://api.example.com/users \
-d '{"name":"Ada"}' :: cmd.exe — одна строка или используйте ^ для продолжения
curl -X POST https://api.example.com/users -d "{\"name\":\"Ada\"}" Пробелы в URL не закодированы
Сырой пробел (или `&`, `#`, `?`) в URL или значении параметра ломает команду — оболочка разбивает аргумент, и curl видит усечённый URL. Процентно закодируйте значение (пробел становится `%20`) или дайте curl закодировать его с помощью `--data-urlencode`. Поля параметров запроса в этом инструменте кодируются автоматически.
# Пробел разбивает аргумент — curl видит два аргумента curl https://api.example.com/search?q=hello world
# Закодируйте пробел (или возьмите весь URL в кавычки) curl 'https://api.example.com/search?q=hello%20world'
Типовые сценарии использования
- Тестирование REST API
- Создавайте и отправляйте запросы к REST-эндпоинту, не выходя из терминала: задайте метод, вставьте Bearer-токен, отправьте JSON-тело и прочитайте ответ. Самый быстрый способ убедиться в корректности API перед написанием клиентского кода.
- Воспроизведение запроса из документации
- Документация API показывает эндпоинты и параметры, но редко даёт полную готовую команду. Заполните метод, URL, заголовки и авторизацию здесь и получите curl-команду, которая работает «как есть» — без борьбы с кавычками или отсутствующими заголовками `Content-Type`.
- Smoke-тесты в CI/CD
- Сгенерируйте curl-команду для health check или post-deploy smoke-теста, затем выполните Export .sh для добавления в пайплайн. Добавьте `--connect-timeout` и `--max-time`, чтобы зависший эндпоинт не блокировал сборку, и проверяйте статус-коды с `-w`.
- Загрузка и скачивание файлов
- Соберите `multipart/form-data`-загрузку с `-F field=@file` или создайте `-L -o filename`-скачивание с переходом по редиректам к CDN. Предварительно закодируйте сложные имена файлов или значения запроса с помощью нашего URL-энкодера.
- Отладка вебхуков
- Воспроизведите webhook-payload, отправив тот же JSON, который отправляет провайдер, с правильными заголовками подписи и `Content-Type`. Воспроизведите точный запрос локально, чтобы отладить, почему ваш обработчик его отклонил.
- Воспроизводимые баг-репорты
- Вставьте одну самодостаточную curl-команду в баг-репорт или PR, чтобы любой мог воспроизвести точный запрос — метод, заголовки, плейсхолдер авторизации и тело. Намного понятнее, чем описывать запрос прозой.
- Изучение флагов curl
- Смотрите, как каждый выбор в форме соответствует реальному флагу — выберите Basic auth и наблюдайте появление `-u`, добавьте JSON-тело и следите за прикреплением заголовка `Content-Type`. Практический способ изучить синтаксис в паре с нашей шпаргалкой по curl.
- Подготовка запроса для конвертации в код
- Создайте и проверьте запрос как curl, затем переведите его в HTTP-клиент вашего приложения. Предстоящая вкладка Convert преобразует вставленную curl-команду в fetch, requests, Go, PHP, Ruby и Node.js — начните с curl-команды, которая точно работает.
Флаги и синтаксис curl
- Экранирование в оболочке
- Инструмент оборачивает значения в одинарные кавычки — самый безопасный способ в POSIX-оболочках, поскольку внутри строки в одинарных кавычках ничего не раскрывается. Буквальная одинарная кавычка внутри значения выводится как последовательность `'\''` (закрывающая кавычка, экранированная кавычка, открывающая кавычка). В `cmd.exe` используйте двойные кавычки; Git Bash и WSL выполняют сгенерированные команды с одинарными кавычками без изменений.
- -d против --data-raw и --data-binary
- `-d`/`--data` удаляет из тела символы новой строки и возврата каретки — подходит для пар `key=value`, теряет данные при многострочном содержимом. `--data-raw` идентичен, но не воспринимает ведущий `@` как имя файла. `--data-binary` отправляет байты точно так, как заданы (используйте `@file` для загрузки сырого содержимого файла). Все три подразумевают POST, если метод не переопределён.
- Multipart (-F) против URL-encoded (-d)
- `-F field=value` создаёт `multipart/form-data` с генерируемым boundary — обязательно для загрузки файлов (`-F file=@path`) и смешанных форм с файлами и текстом. `-d field=value` создаёт `application/x-www-form-urlencoded` — одну строку, объединённую через `&`. Никогда не задавайте `Content-Type` вручную для multipart; curl сам вычисляет boundary и устанавливает заголовок.
- Кодирование заголовка авторизации
- Bearer auth отправляет `Authorization: Bearer
` дословно (RFC 6750). Basic auth через `-u user:pass` Base64-кодируется в `Authorization: Basic ` при передаче — это кодирование, а не шифрование, поэтому используйте HTTPS. API-ключ — это любой кастомный заголовок, который требует сервис, например `X-API-Key: `. - Кодирование строки запроса
- Параметры запроса, добавленные в конструкторе, процентно кодируются и добавляются как `?key=value&key2=value2`. Зарезервированные символы (пробелы, `&`, `=`, `#`) экранируются, чтобы URL был корректным. Для полей тела, которые нужно закодировать, встроенная функция curl `--data-urlencode` выполняет кодирование в момент запроса.
- Поведение при редиректах (-L)
- Без `-L` curl выводит ответ 301/302 и останавливается. С `-L` он следует заголовку `Location` до конечного URL. Обратите внимание, что curl удаляет заголовок `Authorization` при редиректе на другой хост (защита по умолчанию); используйте `--location-trusted` только тогда, когда понимаете последствия.
- Сжатые ответы
- `--compressed` добавляет заголовок `Accept-Encoding`, рекламирующий поддержку gzip/deflate/brotli, и прозрачно разжимает ответ, экономя трафик. Декодированное тело идентично ответу без сжатия — это чисто транспортная оптимизация, безопасная для большинства вызовов API.
- Вывод: -o против -O
- `-o filename` записывает тело ответа в указанный вами файл; `-O` сохраняет его под именем удалённого файла из пути URL. Оба подавляют стандартный вывод в stdout. Сочетайте с `-L`, чтобы редиректы разрешились до реального ресурса перед записью файла.
Лучшие практики curl-запросов
- Никогда не хардкодьте секреты в общих командах
- curl-команда, которую вы вставляете в PR, тикет или чат, будет прочитана другими и проиндексирована инструментами. Замените токены и пароли плейсхолдером (`YOUR_TOKEN`) или ссылайтесь на переменную окружения (`-H "Authorization: Bearer $API_TOKEN"`). Для длинных учётных данных curl может читать заголовок из файла с помощью `-H @headerfile`, чтобы секрет никогда не появлялся в истории оболочки.
- Предпочитайте --data-binary @file для бинарных payload
- Когда тело — это файл, байты которого важны (изображение, подписанный payload, JSON, где значимы пробелы), используйте `--data-binary @file`, а не `-d @file`. Обычный `-d` удаляет символы новой строки и возврата каретки, молча повреждая бинарное и многострочное содержимое. `--data-binary` отправляет файл точно так, как он есть на диске.
- Заключайте значения заголовков в кавычки
- Всегда оборачивайте значения `-H` в кавычки: `-H 'Content-Type: application/json'`. Без кавычек пробел после двоеточия разбивает аргумент, и curl получает некорректный заголовок. Одинарные кавычки также предотвращают раскрытие оболочкой `$`, `*` и других спецсимволов внутри значения — именно это генерирует инструмент по умолчанию.
- Используйте --compressed для экономии трафика
- Добавляйте `--compressed` к вызовам API и загрузкам, чтобы запросить gzip/brotli-кодирование и дать curl прозрачно разжать ответ. Для API с большим объёмом JSON это может сократить объём передачи на 70–90% без изменения получаемого ответа — бесплатное улучшение в скриптах, которые регулярно опрашивают эндпоинты.
- Фиксируйте таймауты в скриптах
- В любом автоматизированном контексте добавляйте `--connect-timeout` и `--max-time`, чтобы медленный или зависший эндпоинт не блокировал пайплайн бесконечно. Health check с `--max-time 10` быстро завершится с ошибкой и позволит CI продолжить работу. Сочетайте с `--retry N` для поглощения кратковременных сетевых сбоев без немедленного отказа.
- Проверяйте с -v перед автоматизацией
- Прежде чем встраивать curl-команду в скрипт или cron-задание, запустите её один раз с `-v`, чтобы увидеть точную строку запроса, заголовки и TLS-рукопожатие. Это самый быстрый способ обнаружить неверный метод, отсутствующий `Content-Type` или незакреплённый заголовок авторизации — отлаживайте интерактивно, затем удалите `-v` для production.
Часто задаваемые вопросы
Что делает этот инструмент?
Мои данные (токены, URL) куда-то передаются?
Как отправить POST-запрос с JSON через curl?
Как добавить Bearer-токен к curl-запросу?
Как загрузить файл с помощью curl?
Можно ли импортировать команду из браузерных DevTools («Copy as cURL»)?
Чем curl на Windows отличается?
В чём разница между -d, --data-raw и --data-binary?
Как отправить куки с curl?
Как следовать редиректам?
Как задать таймаут запроса?
Похожие инструменты
Все инструменты →Конвертер систем счисления — bin, hex, dec, oct
Конвертеры
Конвертация между системами счисления — двоичной, hex, десятичной, восьмеричной и любой базой 2-36 мгновенно. Бесплатно, приватно — вся обработка в браузере.
Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Конвертер регистра — UPPER, lower, camelCase и snake_case
Работа с текстом
Конвертируйте текст между UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE и ещё 6 форматами мгновенно. Бесплатно, только в браузере, без регистрации.
Конвертер цветов — HEX, RGB, HSL и OKLCH
Конвертеры
Конвертируйте HEX в RGB, HSL, OKLCH, OKLAB и CMYK прямо в браузере — копируйте любой формат в один клик. Бесплатно, без регистрации, ваши цвета никогда не покидают страницу.
Генератор crontab и конструктор cron-выражений
Дата и время
Создавайте, проверяйте и расшифровывайте cron-выражения в браузере. Предпросмотр запусков в локальном времени или UTC. POSIX 5 полей, пресеты, описание простым языком. Бесплатно и приватно.
Конвертер CSV в JSON
Кодирование и форматирование
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.