Skip to content

Generator i konstruktor poleceń cURL

Twórz polecenia curl w przeglądarce — ustaw metodę, nagłówki, autoryzację i treść, a gotowe polecenie pojawi się natychmiast. Presety dla Bearer, POST JSON i przesyłania plików. Bezpłatnie, prywatnie, bez rejestracji.

Bez śledzenia Działa w przeglądarce Bezpłatne
Polecenie jest budowane wyłącznie w przeglądarce. Tokeny, adresy URL i payloady nigdy nie opuszczają urządzenia.
Presety
Parametry zapytania
Nagłówki
Autoryzacja
Treść żądania
Opcje
Wygenerowane polecenie
Zweryfikowano pod kątem poprawnego generowania poleceń curl dla metod, autoryzacji i typów treści, dokładnego dołączania nagłówków per typ treści oraz bezpiecznego cytowania i escape'owania w powłoce — Zespół inżynieryjny Go Tools · Jun 3, 2026

Czym jest polecenie curl?

curl to narzędzie wiersza poleceń do przesyłania danych przez HTTP i dziesiątki innych protokołów. Polecenie curl to nazwa pliku binarnego, zestaw flag i adres URL — na przykład `curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'`. Ponieważ curl jest dostępny praktycznie na każdej maszynie z Linuksem, macOS i nowoczesnym systemem Windows, to uniwersalny sposób na testowanie API, odtwarzanie żądań z dokumentacji lub sprawdzanie stanu usługi w skrypcie CI. Zwięzłość, która czyni go potężnym, sprawia też, że trudno go zapamiętać — właśnie dlatego wizualny konstruktor jest pomocny.

Każde polecenie curl ma tę samą anatomię. Metoda (`-X GET`, `-X POST`, …) ustawia czasownik HTTP, domyślnie GET. Adres URL to endpoint, z parametrami zapytania dołączonymi po znaku `?`. Nagłówki (`-H 'Klucz: Wartość'`, wielokrotne) przenoszą metadane, takie jak `Accept` i `Content-Type`. Autoryzacja to po prostu specjalny nagłówek — `-H 'Authorization: Bearer …'` dla tokena, `-u user:pass` dla autoryzacji Basic lub niestandardowe `-H 'X-API-Key: …'`. Treść (`-d` dla danych surowych lub formularza, `-F` dla multipart i przesyłania plików) przenosi payload. Wreszcie flagi opcji, takie jak `-L` (podążaj za przekierowaniami), `-i` (dołącz nagłówki odpowiedzi) i `-v` (tryb szczegółowy), kształtują zachowanie. Narzędzie rozkłada każdą z tych części jako pole formularza i przebudowuje polecenie na żywo.

Sięgnij po generator poleceń curl, gdy w przeciwnym razie zmagałbyś się z cytowaniem, zapominałbyś nagłówka `Content-Type` przy POST z JSON lub ręcznie składał upload multipart. Konstruktor prawidłowo stosuje cytowanie z apostrofami bezpieczne dla powłoki, koduje ciąg zapytania i dołącza właściwe nagłówki dla każdego typu treści — a następnie kopiujesz polecenie, któremu możesz zaufać. Wyczerpującą dokumentację flag z 40+ uruchamialnymi przykładami znajdziesz w towarzyszącej ściągawce curl; do kodowania trudnych wartości ciągu zapytania możesz użyć naszego kodera URL.

Wszystko odbywa się w przeglądarce. Twoje tokeny, poświadczenia, adresy URL i treści żądań są składane z JavaScript po stronie klienta i nigdy nigdzie nie są wysyłane — możesz budować polecenia dla prawdziwych produkcyjnych endpointów z prawdziwymi kluczami API i nic nie opuści urządzenia.

# 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'

Kluczowe funkcje

Wizualny konstruktor żądań

Rozłóż całe żądanie jako pola formularza — metoda, URL, parametry zapytania, nagłówki, autoryzacja, treść i opcje — zamiast zapamiętywać kolejność flag i zasady cytowania. Koniec z zgadywaniem, czy URL idzie przed czy po `-d`.

Polecenie na żywo z kopiowaniem i eksportem

Polecenie curl jest przebudowywane przy każdym naciśnięciu klawisza na dole strony. Skopiuj je do schowka jednym kliknięciem lub wyeksportuj .sh, aby pobrać uruchamialny skrypt powłoki, który możesz wrzucić bezpośrednio do repozytorium lub zadania CI.

Pełna obsługa autoryzacji

Token Bearer, autoryzacja Basic (`-u user:pass`) i niestandardowe nagłówki klucza API, każdy emitowany w dokładnym formacie oczekiwanym przez serwery. Wybierz schemat, wklej poświadczenie, a właściwy nagłówek `Authorization` lub niestandardowy zostanie wygenerowany za Ciebie.

Każdy typ treści

Surowy JSON (z automatycznie dodanym nagłówkiem `Content-Type`), pola formularza `application/x-www-form-urlencoded` i uploady `multipart/form-data`, w których każde pole można przełączyć na plik z prefiksem `@`.

Sześć presetów jednym kliknięciem

GET z Bearer, POST JSON, przesyłanie formularza, autoryzacja Basic, Pobierz `-o` i Verbose debug wypełniają cały formularz jednym dotknięciem. Zacznij od działającego żądania dla najczęstszych zadań API i dostosuj je.

Wyjście wieloliniowe i jednoliniowe

Przełączaj między zwartym poleceniem jednoliniowym do szybkiego wklejania a wersją z kontynuacją odwrotnym ukośnikiem, łatwą do czytania w skrypcie lub przeglądania w pull requeście. To samo polecenie, dwie formy.

100% prywatność w przeglądarce

Tokeny, URL-e, nagłówki i treści żądań są składane wyłącznie po stronie klienta i nigdy nie opuszczają urządzenia — sprawdź to w zakładce Sieć. Bezpieczne dla produkcyjnych endpointów i żywych poświadczeń bez żadnego ujawniania danych.

Zbudowane dla workflow DevTools

Zaprojektowane wokół codziennej pętli testowania API i odtwarzania żądań z opcji „Copy as cURL” w DevTools przeglądarki. Karta Konwertuj, która parsuje wklejone polecenie curl do fetch, requests, Go, PHP, Ruby i Node.js, pojawi się w następnej wersji.

Alternatywy curl i klienty HTTP

HTTPie

CLI, składnia przyjazna człowiekowi

Nowoczesne CLI z kolorowym wyjściem i zwięzłą składnią (`http POST api.example.com/users name=Ada`). Domyślnie ustawia `Content-Type` JSON. Przyjazniejsze do użytku interaktywnego; curl wygrywa pod względem powszechności i przenośności skryptowania.

wget

CLI, skupiony na pobieraniu

Najlepszy do rekurencyjnego pobierania i lustrzanego kopiowania stron; domyślnie śledzi przekierowania i ponawia próby. Słabszy od curl dla dowolnych metod, niestandardowych nagłówków i testowania API. Często preinstalowany obok curl na Linuksie.

Postman

Aplikacja GUI

Pełne GUI do budowania, zapisywania i udostępniania żądań z kolekcjami, środowiskami i synchronizacją zespołu. Świetny do eksploracji API; może importować/eksportować curl. Cięższy niż jednoliniowe polecenie do szybkich sprawdzeń lub CI.

Insomnia

Aplikacja GUI

Lżejsza, open-source'owa alternatywa dla Postmana z przejrzystym konstruktorem żądań i importem/eksportem curl. Dobry do organizowania żądań API; podobnie jak Postman, to więcej niż potrzeba do pojedynczego wywołania ze skryptu.

fetch() / requests

Klienty HTTP w kodzie

JavaScript `fetch()` i Python `requests` to sposób na wykonanie wywołania z kodu aplikacji. Najpierw zbuduj i zweryfikuj żądanie jako curl, a następnie przetłumacz — nadchodząca karta Konwertuj wygeneruje równoważny kod dla fetch, requests i innych klientów.

Przykłady poleceń curl

Proste żądanie GET

curl https://api.example.com/users

Bez flagi metody curl domyślnie używa GET. To najprostsze możliwe żądanie — pobiera zasób i wyświetla treść odpowiedzi w terminalu. Dodaj parametry zapytania w konstruktorze, a zostaną automatycznie zakodowane w URL i dołączone na końcu (`?page=2&limit=50`).

GET z tokenem Bearer

curl https://api.example.com/me \
  -H 'Authorization: Bearer YOUR_TOKEN'

Najczęstsze uwierzytelnione wywołanie REST API. Preset z autoryzacją Bearer automatycznie dodaje nagłówek `Authorization: Bearer …`. Aby sprawdzić zawartość JWT przed wysłaniem, wklej token do naszego dekodera JWT.

POST z treścią JSON

curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada","role":"admin"}'

Klasyka generatora żądań curl: typ treści JSON ustawia `-X POST`, dołącza nagłówek `Content-Type: application/json` i przekazuje payload z `-d`. Następnie sformatuj odpowiedź API naszym formaterem JSON.

POST z formularzem (urlencoded)

curl -X POST https://api.example.com/login \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'username=ada&password=s3cret'

Klasyczne przesyłanie formularza HTML. Każda para `-d field=value` jest łączona znakiem `&` i wysyłana jako `application/x-www-form-urlencoded`. curl koduje znaki zarezerwowane; dodaj pola w sekcji treści formularza, a narzędzie złoży ciąg za Ciebie.

Przesyłanie pliku metodą multipart

curl -X POST https://api.example.com/upload \
  -F 'file=@report.pdf' \
  -F 'title=Q3 report'

Polecenie przesyłania pliku curl używa `-F` dla `multipart/form-data`. Poprzedź wartość znakiem `@`, aby dołączyć plik z dysku; swobodnie mieszaj pola plikowe i tekstowe. curl automatycznie ustawia granicę multipart i `Content-Type` — nigdy nie ustawiaj ich ręcznie.

Pobieranie do pliku

curl -L -o archive.zip \
  https://example.com/files/archive.zip

Zapisz treść odpowiedzi do nazwanego pliku za pomocą `-o`, a `-L` śledzi przekierowania do właściwego URL pobierania (typowe przy CDN i linkach do plików wydań). Użyj `-O` zamiast `-o`, aby zachować nazwę pliku serwera.

Autoryzacja Basic

curl -u ada:s3cret \
  https://api.example.com/private

Autoryzacja basic curl używa `-u user:pass`; curl koduje poświadczenia w Base64 i przesyła je w nagłówku `Authorization: Basic …`. Zawsze używaj autoryzacji Basic przez HTTPS — Base64 to kodowanie, nie szyfrowanie, i jest trywialnie odwracalne.

Tryb debugowania Verbose

curl -v -i https://api.example.com/health

Gdy żądanie działa nieprawidłowo, `-v` wyświetla pełną linię żądania, wszystkie wysłane i odebrane nagłówki oraz uzgadnianie TLS; `-i` dołącza nagłówki odpowiedzi do wyjścia treści. Pierwsza rzecz do sprawdzenia, gdy API zwraca nieprawidłowy kod stanu.

Jak zbudować polecenie curl

  1. 1

    Wybierz metodę HTTP

    Wybierz GET, POST, PUT, PATCH, DELETE, HEAD lub OPTIONS. curl domyślnie używa GET; wybranie POST lub innego czasownika dodaje `-X METODA` do wygenerowanego polecenia. Możesz też kliknąć preset, aby ustawić metodę i pasującą treść jednym kliknięciem.

  2. 2

    Wprowadź URL i parametry zapytania

    Wpisz URL żądania (np. `https://api.example.com/users`). Dodaj parametry zapytania jako pary klucz/wartość, a narzędzie zakoduje je w URL i automatycznie dołączy jako `?klucz=wartość&…` do adresu — bez ręcznego kodowania.

  3. 3

    Dodaj nagłówki i autoryzację

    Dodaj nagłówki żądania jako pary klucz/wartość, a następnie wybierz schemat autoryzacji: Brak, token Bearer, Basic (nazwa użytkownika/hasło) lub niestandardowy nagłówek klucza API. Właściwy nagłówek `Authorization` lub niestandardowy zostanie wygenerowany w dokładnym formacie oczekiwanym przez serwer.

  4. 4

    Ustaw treść żądania

    Dla żądań POST/PUT/PATCH wybierz typ treści: wklej surowy JSON (nagłówek `Content-Type` zostanie dodany za Ciebie), zbuduj pola formularza urlencoded lub złóż upload multipart i przełącz dowolne pole na plik z prefiksem `@`.

  5. 5

    Przełącz opcje

    Włącz potrzebne flagi — podążaj za przekierowaniami (`-L`), wyłącz weryfikację TLS (`-k`), tryb szczegółowy (`-v`), dołącz nagłówki (`-i`), kompresja (`--compressed`), zapisz do pliku (`-o`), limit czasu połączenia lub proxy (`-x`). Każdy przełącznik aktualizuje polecenie na żywo.

  6. 6

    Kopiuj, eksportuj lub resetuj

    Skopiuj gotowe polecenie, wyeksportuj .sh, aby pobrać je jako skrypt, lub Resetuj, aby wyczyścić formularz. Użyj przełącznika Wieloliniowy, aby wybrać między wyjściem jednoliniowym a z kontynuacją odwrotnym ukośnikiem przed skopiowaniem.

Częste błędy curl

Brak -X przy metodzie z treścią

Wysyłanie treści z `-d` implikuje POST, ale jeśli potrzebujesz PUT lub PATCH, musisz to powiedzieć explicite z `-X`. Pominięcie tego wysyła treść jako POST, a serwer zwraca nieprawidłowy status lub odrzuca żądanie.

✗ Niepoprawne
# Intended a PATCH, but -d alone implies POST
curl -d '{"role":"admin"}' \
  https://api.example.com/users/7
✓ Poprawne
# Set the verb explicitly
curl -X PATCH -d '{"role":"admin"}' \
  -H 'Content-Type: application/json' \
  https://api.example.com/users/7

Brak Content-Type przy POST z JSON

Wysyłanie JSON z `-d` NIE ustawia nagłówka `Content-Type` — curl domyślnie używa `application/x-www-form-urlencoded`. Większość API nie może wtedy sparsować treści i zwraca 400 lub 415. Zawsze dołączaj typ zawartości JSON (lub użyj presetu treści JSON, który dodaje go za Ciebie).

✗ Niepoprawne
# Server sees urlencoded, not JSON — 400/415
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ Poprawne
# Declare the JSON content type
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada"}'

Escape w apostrofach vs cudzysłowach podwójnych

Wewnątrz cudzysłowów podwójnych powłoka rozbudowuje `$`, backticki i `!`, psując JSON lub łamiąc go przy `$variable` wewnątrz payloadu. Apostrofy przekazują treść dosłownie. Używaj apostrofów dla treści JSON; przełącz na cudzysłowy podwójne tylko w `cmd.exe`, który nie honoruje apostrofów.

✗ Niepoprawne
# $name gets expanded by the shell to empty string
curl -d "{\"user\":\"$name\"}" \
  https://api.example.com/users
✓ Poprawne
# Single quotes send the body literally
curl -d '{"user":"$name"}' \
  https://api.example.com/users

Użycie -d w żądaniu GET

Dodanie `-d` do żądania po cichu zamienia je w POST. Jeśli chciałeś GET z parametrami zapytania, umieść je w URL (lub użyj `-G`, aby złożyć dane `-d` do ciągu zapytania). `-d` w GET to jedna z najczęstszych przyczyn problemu z niedziałającym żądaniem GET.

✗ Niepoprawne
# -d makes this a POST, not a GET
curl -d 'page=2&limit=50' \
  https://api.example.com/users
✓ Poprawne
# Query string on the URL keeps it a GET
curl 'https://api.example.com/users?page=2&limit=50'

Kontynuacja linii w Windows: ^ vs \

Odwrotny ukośnik (`\`) kontynuuje polecenie w następnej linii w bash, Git Bash i WSL. W `cmd.exe` znakiem kontynuacji jest karetka (`^`), a PowerShell używa backtick (`` ` ``). Wklejenie polecenia z kontynuacją odwrotnym ukośnikiem do `cmd` psuje je — przełącz to narzędzie na wyjście jednoliniowe dla Windows `cmd`.

✗ Niepoprawne
:: cmd.exe — backslash is not a continuation char
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ Poprawne
:: cmd.exe — one line, or use ^ to continue
curl -X POST https://api.example.com/users -d "{\"name\":\"Ada\"}"

Niezakodowane spacje w URL

Surowa spacja (lub `&`, `#`, `?`) w URL lub wartości zapytania psuje polecenie — powłoka dzieli argument i curl widzi skrócony URL. Zakoduj wartość procentowo (spacja staje się `%20`) lub pozwól curl ją zakodować za pomocą `--data-urlencode`. Pola parametrów zapytania w tym narzędziu kodują automatycznie.

✗ Niepoprawne
# Space splits the argument — curl sees two args
curl https://api.example.com/search?q=hello world
✓ Poprawne
# Encode the space (or quote the whole URL)
curl 'https://api.example.com/search?q=hello%20world'

Typowe zastosowania

Testowanie REST API
Buduj i wysyłaj żądania do endpointów REST bez opuszczania terminala: ustaw metodę, wklej token Bearer, wyślij treść JSON i odczytaj odpowiedź. Najszybszy sposób na potwierdzenie, że API działa prawidłowo, zanim napiszesz kod klienta.
Odtwarzanie żądań z dokumentacji
Dokumentacja API pokazuje endpointy i parametry, ale rzadko kompletne, gotowe do skopiowania polecenie. Wypełnij metodę, URL, nagłówki i autoryzację tutaj i otrzymaj polecenie curl, które działa od razu — bez walki z cytowaniem i brakującymi nagłówkami `Content-Type`.
Skrypty smoke-test w CI/CD
Wygeneruj polecenie curl do sprawdzania stanu lub smoke testu po wdrożeniu, a następnie wyeksportuj .sh, aby wrzucić je do potoku. Dodaj `--connect-timeout` i `--max-time`, aby zawieszony endpoint nie blokował budowania, i sprawdzaj kody stanu za pomocą `-w`.
Przesyłanie i pobieranie plików
Złóż upload `multipart/form-data` z `-F field=@file` lub zbuduj pobieranie `-L -o filename`, które śledzi przekierowania do CDN. Zakoduj trudne nazwy plików lub wartości zapytania najpierw naszym koderem URL.
Debugowanie webhooków
Odtwórz payload webhooka, wysyłając POST z tą samą treścią JSON, którą wysyła dostawca, z właściwymi nagłówkami podpisu i `Content-Type`. Odtwórz dokładne żądanie lokalnie, aby debugować, dlaczego handler je odrzucił.
Odtwarzalne raporty błędów
Wklej pojedyncze, autonomiczne polecenie curl do raportu błędu lub PR, aby każdy mógł odtworzyć dokładne żądanie — metodę, nagłówki, placeholder autoryzacji i treść. Znacznie czytelniejsze niż opisywanie żądania w prozie.
Nauka flag curl
Zobacz, jak każdy wybór w formularzu mapuje się na prawdziwą flagę — wybierz autoryzację Basic i obserwuj, jak pojawia się `-u`, dodaj treść JSON i obserwuj, jak dołącza się nagłówek `Content-Type`. Praktyczny sposób nauki składni, uzupełniony naszą ściągawką curl.
Przygotowanie żądania do konwersji na kod
Najpierw zbuduj i zweryfikuj żądanie jako curl, a następnie przetłumacz je na klienta HTTP swojej aplikacji. Nadchodząca karta Konwertuj zamieni wklejone polecenie curl na fetch, requests, Go, PHP, Ruby i Node.js — zacznij od polecenia curl, o którym wiesz, że działa.

Flagi i składnia curl — dokumentacja

Cytowanie i escape w powłoce
Narzędzie opakowuje wartości w apostrofy, najbezpieczniejszą formę w powłokach POSIX, ponieważ nic wewnątrz ciągu w apostrofach nie jest rozwijane. Dosłowny apostrof wewnątrz wartości jest emitowany jako sekwencja `'\''` (zamknięcie cytowania, escape apostrofu, ponowne otwarcie cytowania). W `cmd.exe` przejdź na cudzysłowy podwójne; Git Bash i WSL uruchamiają wygenerowane polecenia z apostrofami bez zmian.
-d vs --data-raw vs --data-binary
`-d`/`--data` usuwa znaki nowej linii i powrotu karetki z treści — odpowiednie dla par `key=value`, stratne dla treści wieloliniowej. `--data-raw` jest takie samo, ale nie traktuje wiodącego `@` jako nazwy pliku. `--data-binary` wysyła bajty dokładnie tak jak podane (użyj `@file`, aby przesłać surową zawartość pliku). Wszystkie trzy implikują POST, chyba że metoda zostanie nadpisana.
Multipart (-F) vs urlencoded (-d)
`-F field=value` produkuje `multipart/form-data` z wygenerowaną granicą — wymagane dla uploadów plików (`-F file=@path`) i formularzy mieszanych plik/tekst. `-d field=value` produkuje `application/x-www-form-urlencoded`, pojedynczy ciąg połączony znakiem `&`. Nigdy nie ustawiaj ręcznie `Content-Type` dla multipart; curl oblicza granicę i sam ustawia nagłówek.
Kodowanie nagłówka autoryzacji
Autoryzacja Bearer wysyła `Authorization: Bearer ` dosłownie (RFC 6750). Autoryzacja Basic z `-u user:pass` jest kodowana w Base64 do `Authorization: Basic ` — to kodowanie, nie szyfrowanie, więc używaj HTTPS. Klucz API to dowolny niestandardowy nagłówek wymagany przez usługę, np. `X-API-Key: `.
Kodowanie ciągu zapytania
Parametry zapytania dodane w konstruktorze są kodowane procentowo i dołączane jako `?klucz=wartość&klucz2=wartość2`. Znaki zarezerwowane (spacje, `&`, `=`, `#`) są escape'owane, aby URL był prawidłowy. Dla pól treści, które muszą być zakodowane, własne `--data-urlencode` curl obsługuje kodowanie w czasie żądania.
Zachowanie przy przekierowaniach (-L)
Bez `-L` curl wyświetla odpowiedź 301/302 i zatrzymuje się. Z `-L` podąża za nagłówkiem `Location` do ostatecznego URL. Zauważ, że curl usuwa nagłówek `Authorization`, gdy przekierowanie przechodzi na inny host (domyślne zachowanie bezpieczeństwa); użyj `--location-trusted` tylko wtedy, gdy rozumiesz implikacje.
Skompresowane odpowiedzi
`--compressed` dodaje nagłówek `Accept-Encoding` reklamujący obsługę gzip/deflate/brotli i transparentnie dekompresuje odpowiedź, oszczędzając przepustowość. Zdekodowana treść jest identyczna jak w żądaniu nieskompresowanym — wyłącznie optymalizacja transferu, bezpieczna do włączenia w większości wywołań API.
Wyjście: -o vs -O
`-o filename` zapisuje treść odpowiedzi do nazwanego przez Ciebie pliku; `-O` zapisuje ją pod zdalną nazwą pliku z ścieżki URL. Oba tłumią normalny zrzut na stdout. Połącz z `-L`, aby przekierowania rozwiązały się do prawdziwego zasobu przed zapisaniem pliku.

Dobre praktyki dla żądań curl

Nigdy nie koduj na stałe sekretów w udostępnianych poleceniach
Polecenie curl, które wkleisz do PR, ticketu lub czatu, będzie czytane przez innych i indeksowane przez narzędzia. Zastąp tokeny i hasła placeholderem (`YOUR_TOKEN`) lub odwołaj się do zmiennej środowiskowej (`-H "Authorization: Bearer $API_TOKEN"`). Dla długich poświadczeń curl może odczytać nagłówek z pliku z `-H @headerfile`, dzięki czemu sekret nigdy nie pojawi się w historii powłoki.
Preferuj --data-binary @file dla payloadów binarnych
Gdy treścią jest plik, którego bajty mają znaczenie — obraz, podpisany payload, JSON z istotnym białym znakiem — użyj `--data-binary @file`, a nie `-d @file`. Proste `-d` usuwa znaki nowej linii i powrotu karetki, po cichu uszkadzając zawartość binarną i wieloliniową. `--data-binary` wysyła plik dokładnie tak jak jest na dysku.
Cytuj wartości nagłówków
Zawsze opakowuj wartości `-H` w cudzysłowy: `-H 'Content-Type: application/json'`. Bez cytowania spacja po dwukropku dzieli argument i curl widzi zniekształcony nagłówek. Apostrofy zapobiegają też rozwijaniu przez powłokę `$`, `*` i innych znaków specjalnych wewnątrz wartości — dokładnie to, co to narzędzie domyślnie emituje.
Używaj --compressed, aby oszczędzać przepustowość
Dodaj `--compressed` do wywołań API i pobierania, aby zażądać kodowania gzip/brotli i mieć curl transparentnie dekompresujący. W przypadku API intensywnie korzystających z JSON może to zmniejszyć rozmiar transferu o 70–90% bez żadnych zmian w widzianej odpowiedzi — darmowe zyski w skryptach, które wielokrotnie odpytują endpointy.
Ustalaj limity czasu w skryptach
W dowolnym automatycznym kontekście dodaj `--connect-timeout` i `--max-time`, aby powolny lub zawieszony endpoint nie mógł blokować potoku na zawsze. Sprawdzenie stanu z `--max-time 10` kończy się szybko i pozwala CI przejść dalej. Połącz z `--retry N`, aby pochłaniać przejściowe problemy sieciowe bez natychmiastowego rezygnowania.
Weryfikuj z -v przed automatyzacją
Zanim wpiszesz polecenie curl do skryptu lub zadania cron, uruchom je raz z `-v`, aby zobaczyć dokładną linię żądania, nagłówki i uzgadnianie TLS. To najszybszy sposób na wykrycie złej metody, brakującego `Content-Type` lub nagłówka autoryzacji, który nie został dołączony — debuguj interaktywnie, a następnie usuń `-v` dla produkcji.

Najczęściej zadawane pytania

Do czego służy to narzędzie?
Buduje gotowe do uruchomienia polecenie curl na podstawie prostego formularza. Wybierasz metodę HTTP, wpisujesz URL, dodajesz parametry zapytania i nagłówki, wybierasz schemat autoryzacji (Brak, Bearer, Basic lub nagłówek klucza API), ustawiasz treść żądania (JSON, formularz, multipart lub przesyłanie pliku) i przełączasz flagi opcji, takie jak podążanie za przekierowaniami lub tryb szczegółowy. Gdy wypełniasz formularz, polecenie curl jest przebudowywane na żywo na dole strony — skopiuj je, wyeksportuj jako skrypt `.sh` lub przełącz między wyjściem jednoliniowym a wieloliniowym. To generator poleceń curl stworzony dla codziennej pracy przy testowaniu REST API, odtwarzaniu żądań z dokumentacji lub wstawianiu odtwarzalnego polecenia do raportu błędu. Szczegółowe omówienie flag znajdziesz w naszym ściągawce curl.
Czy moje dane (tokeny, URL-e) są gdzieś wysyłane?
Nie. Całe polecenie jest budowane w przeglądarce za pomocą JavaScript. Twoje tokeny, poświadczenia, adresy URL, nagłówki i treści żądań nigdy nie są przesyłane, przechowywane ani rejestrowane na żadnym serwerze — możesz to potwierdzić w zakładce Sieć przeglądarki, gdzie budowanie polecenia nie wywołuje żadnych żądań sieciowych. Dlatego narzędzie jest bezpieczne do użytku z prawdziwymi produkcyjnymi endpointami i żywymi kluczami API: nic, co wpisujesz, nie opuszcza urządzenia. Polecenie działa dopiero wtedy, gdy je skopiujesz i uruchomisz samodzielnie we własnym terminalu.
Jak wysłać żądanie POST z JSON w curl?
Ustaw metodę na POST i wybierz typ treści JSON; narzędzie wygeneruje `curl -X POST -H 'Content-Type: application/json' -d '{…}'`. Dwie rzeczy mają znaczenie: flaga `-d` (lub `--data`) przenosi treść, a nagłówek `Content-Type: application/json` informuje serwer, jak ją parsować — pominięcie nagłówka spowoduje, że wiele frameworków zignoruje lub błędnie odczyta payload. Nowszy curl (7.82+) oferuje również skrót `--json`, który ustawia nagłówek i treść jednocześnie. Po wywołaniu wklej odpowiedź do naszego formatera JSON, aby wyświetlić ją czytelnie i zwalidować.
Jak dodać token Bearer do żądania curl?
Dodaj nagłówek `Authorization` z wartością `Bearer YOUR_TOKEN` lub wybierz preset „GET z Bearer” i wklej swój token. Wygenerowane polecenie to `curl -H 'Authorization: Bearer YOUR_TOKEN'`. Słowo `Bearer`, jedna spacja, a następnie token — ten dokładny format jest wymagany przez specyfikację OAuth 2.0 Bearer (RFC 6750). Aby sprawdzić claims i ważność tokena przed wysłaniem, zdekoduj go naszym dekoderem JWT.
Jak przesłać plik za pomocą curl?
Użyj typu treści Multipart i przełącz pole na Plik: narzędzie wygeneruje `curl -X POST -F 'file=@/path/to/file'`. Prefiks `@` mówi curl, aby odczytał plik z dysku i wysłał go jako `multipart/form-data`; możesz dodać więcej pól `-F` zarówno dla plików, jak i zwykłych wartości tekstowych w tym samym żądaniu. Nie ustawiaj ręcznie nagłówka `Content-Type` dla multipart — curl generuje granicę i ustawia nagłówek automatycznie, a jej zastąpienie psuje przesyłanie. W przypadku przesyłania jednego pliku metodą PUT curl używa `-T file `.
Czy mogę zaimportować polecenie skopiowane z DevTools przeglądarki ("Copy as cURL")?
Jeszcze nie — to jest karta Konwertuj, która zostanie udostępniona w następnej wersji. Będzie parsować wklejone polecenie curl (w tym to generowane przez DevTools opcją „Copy as cURL”) i tłumaczyć je na JavaScript fetch, Python requests, Go, PHP, Ruby i Node.js. Na razie narzędzie jest konstruktorem: odtwórz żądanie, wypełniając ręcznie pola URL, nagłówków, autoryzacji i treści. Dane wyjściowe DevTools są obszerne, ale czytelne — skopiuj każdy nagłówek `-H` do sekcji nagłówków i URL do pola URL.
Czym różni się curl w systemie Windows?
Plik binarny curl działa tak samo; różni się cytowanie w powłoce. W `cmd.exe` używasz cudzysłowów podwójnych (`"`) wokół wartości i karetki (`^`) do kontynuacji linii, a apostrofy nie mają specjalnego znaczenia. W PowerShell `curl` jest aliasem dla `Invoke-WebRequest`, chyba że wywołasz `curl.exe` wprost, a reguły cytowania znowu się różnią. Najprostszą opcją jest Git Bash lub WSL, gdzie polecenia z apostrofami generowane przez to narzędzie działają bez zmian. Jeśli musisz używać `cmd`, przełącz wygenerowane polecenie na jednoliniowe i zamień cytowanie `'…'` na `"…"`.
Jaka jest różnica między -d, --data-raw a --data-binary?
`-d` (alias `--data`) wysyła treść i usuwa znaki nowej linii i powrotu karetki z danych — odpowiednie dla par `key=value`, ryzykowne dla JSON rozpiętego na wielu liniach. `--data-raw` jest identyczne, ale nie traktuje wiodącego `@` jako nazwy pliku, więc jest bezpiecznym wyborem, gdy dane mogą dosłownie zaczynać się od `@`. `--data-binary` wysyła bajty dokładnie tak jak podane, bez usuwania nowych linii — właściwa flaga do przesyłania surowej zawartości pliku (`--data-binary @file.json`) lub dowolnego payloadu, w którym białe znaki mają znaczenie. Wszystkie trzy implikują POST, chyba że nadpiszesz metodę.
Jak wysłać cookies za pomocą curl?
Użyj `-b` do wysyłania cookies i `-c` do ich zapisywania. `-b 'name=value'` wysyła dosłowny ciąg cookie, podczas gdy `-b cookies.txt` odczytuje cookies z pliku w formacie Netscape. Aby przechwycić cookies ustawiane przez serwer (np. po zalogowaniu), dodaj `-c cookies.txt`, aby zapisać je do pliku jar, a następnie ponownie użyj tego pliku z `-b cookies.txt` w kolejnym żądaniu. Ten konstruktor skupia się na nagłówkach, autoryzacji i treści; dla nagłówka cookie możesz też po prostu dodać nagłówek `Cookie: name=value` w sekcji nagłówków.
Jak podążać za przekierowaniami?
Przełącz opcję „Podążaj za przekierowaniami (-L)” lub dodaj ręcznie flagę `-L`. Domyślnie curl wyświetla odpowiedź 301/302 i zatrzymuje się; `-L` nakazuje mu podążać za nagłówkiem `Location` do ostatecznego celu. Jest to niezbędne przy linkach do pobierania za CDN-ami, skróconych URL-ach i API, które przekierowują HTTP na HTTPS. Połącz z `-o filename`, aby zapisać pobrany plik po rozwiązaniu przekierowania.
Jak ustawić limit czasu żądania?
Użyj opcji „Limit czasu połączenia”, aby dodać `--connect-timeout `, co ogranicza czas oczekiwania curl na nawiązanie połączenia. Aby ograniczyć całkowity czas transferu — połączenia plus pobierania — dodaj ręcznie do wygenerowanego polecenia `--max-time `. Ustawianie limitów czasu to dobra praktyka w każdym skrypcie lub teście dymu CI: bez nich zawieszony endpoint może blokować potok przez czas nieokreślony. Połącz z `--retry N`, jeśli chcesz, aby curl ponawiał próby przy przejściowych awariach.

Powiązane narzędzia

Zobacz wszystkie narzędzia →