Um comando curl tem três partes: o nome do programa (curl), zero ou mais opções e uma URL de destino. Antes de o curl vê-las, o shell divide a linha em palavras e remove uma camada de aspas.
As aspas importam porque corpos e cabeçalhos contêm espaços e caracteres especiais. Aspas simples são literais: tudo entre elas é passado sem alteração, e por isso corpos JSON costumam ser envolvidos em aspas simples. Aspas duplas permitem que o shell expanda variáveis e interprete algumas sequências de escape. Uma contrabarra no fim da linha é uma continuação de linha, unindo a linha seguinte, que é como o "Copiar como cURL" gera comandos legíveis em várias linhas.
As opções vêm em formas curta e longa. Sinalizadores curtos são um traço e uma letra (-X, -H, -d); os longos são dois traços e uma palavra (--request, --header, --data). Sinalizadores curtos podem ser agrupados: -sSL é -s -S -L. Um sinalizador que recebe um valor pode tê-lo anexado sem espaço, então -XPOST significa -X POST, o que confunde leituras apressadas.
Tudo que não é uma opção nem o valor de uma opção é a URL. O curl acrescenta https:// quando o esquema está ausente.
Leia na ordem em que a requisição é construída, não na ordem em que foi digitada
As flags de um comando curl podem aparecer em qualquer ordem, o que significa que a sequência na página não tem relação com a sequência do que acontece. Ler da esquerda para a direita é ler os hábitos de digitação do autor.
A ordem que importa é a da própria requisição: método, depois URL, depois cabeçalhos, depois corpo, depois o que acontece com a resposta. Reconstruir o comando assim transforma uma linha longa em quatro perguntas curtas e torna óbvia a peça que falta — um -d sem tipo de conteúdo, um -H que duplica algo que o curl já define, uma flag de redirecionamento que muda o que a coisa toda faz.
Um comando que você não consegue reenunciar nessa ordem é um comando que você não terminou de ler — o que mais importa quando ele veio de outra pessoa e você está prestes a executá-lo.