(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como enviar dados para uma API REST com POST em Python

João Barros 06 de July de 2026 4 min de leitura

Enviar dados para uma API REST com POST em Python é uma das tarefas mais comuns na integração de sistemas. Enquanto um pedido GET serve para ler informação, o método POST serve para enviar dados novos — criar um cliente, submeter um formulário ou registar uma encomenda. A boa notícia é que, com a biblioteca requests, bastam poucas linhas para o fazer de forma limpa e legível.

Pré-requisitos

  • Python 3.8 ou superior instalado no teu computador.
  • A biblioteca requests (instalamo-la no Passo 1).
  • Um endpoint que aceite POST. Para aprender, vamos usar o serviço público de testes https://httpbin.org/post, que devolve exatamente aquilo que enviamos.
  • Conhecer os dicionários de Python, pois são a base dos dados que vamos enviar.

Passo 1: Instalar e importar a biblioteca requests

A biblioteca requests não vem incluída no Python, por isso instalamo-la com o pip. No terminal, corre o seguinte comando:

pip install requests

Depois, no início do teu script, importa-a para a poderes usar:

import requests

Passo 2: Preparar os dados que vais enviar

Quase todas as APIs modernas trocam informação em formato JSON. Em Python, o mais prático é começar por um dicionário normal com os campos que queremos enviar. Vamos imaginar que estamos a criar um novo cliente:

novo_cliente = {
    "nome": "Ana Silva",
    "email": "ana.silva@exemplo.pt",
    "plano": "premium"
}

Repara que não precisas de converter este dicionário para texto JSON à mão. Como vais ver no passo seguinte, a biblioteca requests faz essa conversão por ti. Podes incluir números, texto e até listas ou dicionários dentro dele — a estrutura é convertida para JSON tal como está.

Passo 3: Enviar os dados com requests.post

Para enviar o dicionário como JSON, usamos requests.post e passamos os dados no parâmetro json=. Este parâmetro trata de duas coisas ao mesmo tempo: converte o dicionário em JSON e define o cabeçalho Content-Type: application/json automaticamente.

url = "https://httpbin.org/post"

resposta = requests.post(url, json=novo_cliente, timeout=10)

Usa sempre json= quando queres enviar JSON, e não data=. Com data=, os campos seriam enviados como um formulário (form), que é um formato diferente e a maioria das APIs de dados não espera.

Dica: o parâmetro timeout=10 evita que o teu programa fique bloqueado para sempre caso a API não responda. Envia-o sempre nos teus pedidos.

Passo 4: Ler a resposta e verificar o código de estado

Depois de enviar o pedido, a API responde com um status code (código de estado). Os códigos 200 (OK) e 201 (Created) indicam que correu tudo bem. Podemos ler esse código e o corpo da resposta assim:

print("Código:", resposta.status_code)

dados = resposta.json()
print(dados)

O método resposta.json() converte a resposta de JSON num dicionário Python, pronto a usar no resto do teu programa.

Passo 5: Tratar erros comuns

Em produção nem sempre tudo corre bem: a API pode recusar os dados ou a rede pode falhar. Para não deixar passar um erro silencioso, usamos raise_for_status(), que lança uma exceção quando o código é de erro (4xx ou 5xx), dentro de um bloco try:

try:
    resposta = requests.post(url, json=novo_cliente, timeout=10)
    resposta.raise_for_status()
    print("Cliente criado:", resposta.json())
except requests.exceptions.HTTPError as erro:
    print("A API devolveu um erro:", erro)
except requests.exceptions.RequestException as erro:
    print("Falha de ligação:", erro)

Desta forma, distingues claramente um erro devolvido pela API (por exemplo, 400 Bad Request quando faltam campos) de um problema de rede, como um timeout ou uma falha de DNS.

Verificar o resultado

Como estamos a usar o httpbin.org/post, a resposta devolve tudo o que enviámos dentro de um campo json. Se vires os teus campos (nome, email e plano) refletidos na resposta, acompanhados de um código 200, então o envio funcionou. Numa API real, confirma também que o novo registo aparece na base de dados ou no painel do serviço.

Conclusão

Com poucas linhas e a biblioteca requests, já consegues enviar dados para qualquer API REST com um pedido POST, ler a resposta e tratar os erros mais frequentes. Um bom próximo passo é aprender a autenticar os teus pedidos com um token no cabeçalho Authorization, para trabalhares com APIs privadas. Qual vai ser a primeira API a que vais enviar os teus dados?