Você acabou de clicar em um botão para executar um relatório complexo. Ou talvez tenha solicitado um trabalho de transcodificação de vídeo. Em vez da página travar por minutos, você recebe imediatamente uma mensagem: "Sua solicitação foi aceita para processamento." Alguns minutos depois, você recebe um e-mail com um link para o seu relatório finalizado.
Essa experiência suave e assíncrona é uma característica de softwares modernos bem projetados. E é impulsionada por um código de status HTTP crucial, mas muitas vezes mal compreendido: 202 Accepted
.
Ao contrário de seu primo 200 OK
, que diz "Terminei agora", ou 201 Created
, que diz "Criei algo novo", o código de status 202 Accepted
tem tudo a ver com o gerenciamento de expectativas. É a maneira do servidor de dizer: "Mensagem recebida. Entendi o que você quer que eu faça. Não posso lhe dar o resultado agora, mas o coloquei na fila e vou lidar com isso. Você não precisa esperar."
É o equivalente digital de entregar seu bilhete a um anfitrião de restaurante movimentado. Eles não lhe trazem comida imediatamente, mas você confia que seu lugar na fila está seguro e sua refeição estará pronta eventualmente.
Se você está construindo ou usando APIs que lidam com tarefas de longa duração, entender o 202 Accepted
é fundamental para criar aplicações responsivas, escaláveis e amigáveis ao usuário.
Então, o que isso significa e por que é importante para desenvolvedores, testadores e consumidores de API entenderem isso?
E antes de mergulharmos na mecânica, se você está projetando APIs que exigem fluxos de trabalho assíncronos, você precisa de uma ferramenta que possa ajudá-lo a testar e visualizar essas interações complexas. Baixe o Apidog gratuitamente; é uma plataforma de API completa que permite simular facilmente respostas 202
, testar mecanismos de polling e garantir que seus processos assíncronos sejam robustos e confiáveis.
Agora, vamos detalhar o que 202 Accepted
significa, quando usá-lo e como implementá-lo corretamente.
Preparando o Cenário: O Problema do Pensamento Síncrono
Para entender por que o 202
é necessário, devemos primeiro reconhecer as limitações das requisições síncronas.
O ciclo típico de requisição-resposta HTTP é síncrono e bloqueante:
- Cliente: Envia uma requisição.
- Cliente: Espera... (isso é frequentemente chamado de "tempo para o primeiro byte" ou TTFB).
- Servidor: Processa a requisição (isso pode envolver cálculos complexos, consultas a bancos de dados, chamadas a outros serviços).
- Servidor: Envia uma resposta (
200 OK
,201 Created
, etc.). - Cliente: Recebe a resposta e age sobre ela.
Este modelo funciona perfeitamente para operações rápidas, como buscar um perfil de usuário, recuperar uma lista de produtos ou atualizar um único campo. Mas e se a operação levar 5 segundos? 30 segundos? 5 minutos?
- A conexão pode expirar, levando a erros.
- O navegador ou aplicativo do usuário pareceria congelado, criando uma experiência de usuário terrível.
- Seus processos de servidor ficariam ocupados, incapazes de lidar com outras requisições de entrada, levando a uma baixa escalabilidade.
O código de status 202 Accepted
é a solução elegante para esse problema. Ele quebra a natureza bloqueante do HTTP, permitindo o processamento assíncrono.
O Que o HTTP 202 Accepted Realmente Significa?
O código de status HTTP 202 Accepted
é definido na RFC como uma resposta de sucesso. No entanto, é um tipo muito específico de sucesso. O código de status 202 Accepted pertence à categoria 2xx, que geralmente indica sucesso. Ele indica que:
- A requisição foi recebida e compreendida.
- A requisição foi aceita para processamento.
- O processamento ainda não foi concluído.
- O processamento pode ou não resultar eventualmente em uma ação concluída (pode até falhar mais tarde).
No entanto, ao contrário do 200 OK
, que significa que a requisição foi processada com sucesso e está completa, o 202 nos diz algo diferente:
O servidor aceitou a requisição, mas o processamento ainda não foi finalizado.
Crucialmente, a resposta deve dar ao cliente alguma indicação de onde ele pode verificar o status da requisição ou onde o resultado final estará disponível no futuro.
Em outras palavras, 202 é a maneira educada do servidor de dizer:
"Ei, recebi sua requisição. Estou trabalhando nela. Mas não espere o resultado imediatamente."
Isso o torna especialmente útil para processos de operação assíncrona que levam tempo, como enviar um e-mail, processar um grande conjunto de dados ou iniciar um trabalho em segundo plano.
Por Que o 202 Accepted Existe?
Nem todas as requisições podem ser processadas instantaneamente. Imagine se toda vez que você enviasse uma chamada de API, o servidor tivesse que esperar até que todo o trabalho fosse concluído antes de responder. Isso poderia levar a:
- Timeouts em tarefas de longa duração.
- Má experiência do usuário porque os clientes travariam.
- Sobrecarga do servidor, já que os recursos ficam ocupados até que os trabalhos terminem.
O código de status 202 resolve esse problema, permitindo que os servidores reconheçam as requisições sem fazer os clientes esperarem.
O Fluxo de Trabalho Assíncrono: Uma Análise Passo a Passo
Vamos analisar um exemplo concreto. Imagine uma API para gerar relatórios de dados personalizados.
Passo 1: A Requisição do Cliente
Um aplicativo cliente envia uma requisição POST
para iniciar a geração do relatório.
POST /api/reports/generate HTTP/1.1Host: api.example.comContent-Type: application/jsonAuthorization: Bearer <token>
{
"type": "annual_sales",
"year": 2023,
"format": "pdf"
}
Passo 2: A Resposta 202 do Servidor
O servidor recebe a requisição. Ele valida se a requisição está bem formada e se o usuário está autorizado. Em seguida, ele imediatamente coloca o trabalho em uma fila de processamento (usando um sistema como Redis, RabbitMQ ou Amazon SQS) e responde.
HTTP/1.1 202 AcceptedLocation: <https://api.example.com/api/reports/status/job-12345Content-Type:> application/json
{
"message": "Your report generation request has been accepted and is being processed.",
"job_id": "job-12345",
"status_url": "<https://api.example.com/api/reports/status/job-12345>",
"estimated_completion_time": "2023-10-27T10:05:00Z"
}
Essa resposta é incrivelmente poderosa. Vamos detalhá-la:
HTTP/1.1 202 Accepted
: A mensagem principal: "Recebi."- Cabeçalho
Location
: Um cabeçalho HTTP padrão que aponta para uma URL onde o status da requisição pode ser monitorado. Esta é uma boa prática para respostas 202. - Corpo da Resposta: Fornece informações úteis, legíveis por humanos e máquinas, sobre o que acontece a seguir. O
job_id
e astatus_url
são cruciais.
Passo 3: O Processamento Assíncrono
O cliente agora está livre para fazer outras coisas. Enquanto isso, no servidor:
- Um worker de fundo separado (ou processo) pega o trabalho da fila.
- Ele executa a tarefa demorada: consultar o banco de dados, compilar dados, gerar o PDF.
- Uma vez concluído, ele armazena o resultado (por exemplo, em armazenamento em nuvem como S3) e atualiza o status do trabalho para "concluído".
Passo 4: O Cliente Verifica a Conclusão
O cliente agora pode consultar a status_url
fornecida na resposta 202.
GET https://api.example.com/api/reports/status/job-12345
A resposta a esta requisição de polling pode mudar ao longo do tempo:
- Inicialmente:
{"status": "processing", "progress": 45}
- Quando Concluído:
{"status": "completed", "download_url": "<https://api.example.com/api/reports/download/job-12345.pdf>"}
Alternativamente, o servidor poderia enviar uma notificação via um webhook para uma URL fornecida pelo cliente, que é um padrão mais avançado e eficiente do que o polling.
Características Principais do 202 Accepted
Aqui estão as características essenciais de uma resposta 202:
- Requisição recebida: O servidor recebeu sua requisição.
- Processamento não concluído: O trabalho real ainda está em andamento.
- Nenhuma garantia de conclusão: Ao contrário do 200, um 202 não promete que o trabalho será bem-sucedido, apenas que foi aceito.
- Útil para fluxos de trabalho assíncronos: Trabalhos em segundo plano, filas ou processamento atrasado.
202 Accepted vs. Outros Códigos de Sucesso: Conhecendo a Diferença
É fácil confundir 202
com outros códigos 2xx. Aqui está um guia rápido:
200 OK
: "Processe sua requisição com sucesso e aqui está o resultado agora mesmo." (Síncrono, resultado imediato)201 Created
: "Criei um novo recurso com sucesso agora mesmo. Aqui está sua localização e seus dados." (Síncrono, criação imediata)202 Accepted
: "Processarei sua requisição. Verifique mais tarde o resultado." (Assíncrono, processamento adiado)204 No Content
: "Processe sua requisição com sucesso, mas não tenho conteúdo para enviar de volta." (Síncrono, sem corpo)
Use 202
quando o resultado estiver disponível no futuro, não imediatamente.
Por Que Usar o 202 Accepted? Os Principais Benefícios
- Experiência do Usuário (UX) Aprimorada: O aplicativo cliente permanece responsivo. Os usuários recebem feedback imediato de que sua requisição foi recebida, e não uma roda giratória da morte.
- Melhor Escalabilidade do Servidor: As threads principais de tratamento de requisições do servidor são liberadas quase instantaneamente. Elas delegam o trabalho pesado para workers em segundo plano, permitindo que o servidor lide com muito mais requisições de entrada.
- Lida com a Incerteza: O servidor pode aceitar uma requisição mesmo que não tenha 100% de certeza de que ela poderá ser atendida posteriormente. Por exemplo, ele pode aceitar uma requisição que depende de um serviço de terceiros que está temporariamente inativo.
- Realista para Operações Complexas: Modela com precisão processos do mundo real que levam tempo, como envio de e-mails, processamento de vídeos, execução de modelos de aprendizado de máquina ou manipulação de grandes exportações de dados.
Casos de Uso Reais para HTTP 202
Você encontrará o 202 Accepted
em muitos aplicativos modernos:
- Processamento de Arquivos: Transcodificação de imagem/vídeo, conversão de documentos (por exemplo, geração de PDF).
- Operações de Dados: Geração de grandes relatórios, exportação/importação de dados, envio de e-mails em massa.
- IA/Aprendizado de Máquina: Envio de uma tarefa para treinamento ou inferência de modelo.
- Processamento de Pagamentos: Alguns gateways de pagamento aceitam uma requisição de pagamento de forma assíncrona.
- DevOps/CI-CD: Acionamento de um pipeline de build. A API aceita a requisição imediatamente e retorna um link para os logs do build.
Benefícios de Usar o 202 Accepted
Por que desenvolvedores e designers de API devem usar o 202?
- Evita timeouts do cliente: Os usuários não precisam esperar.
- Melhora a escalabilidade: Os servidores não ficam bloqueados em tarefas longas.
- Melhor feedback do usuário: Em vez de silêncio, os clientes sabem que a requisição está sendo processada.
- Suporta arquiteturas assíncronas: Essencial para microsserviços modernos.
202 Accepted em Fluxos de Trabalho Assíncronos
Veja como geralmente funciona:
- O cliente envia uma requisição.
- O servidor responde com 202 e, possivelmente, uma "URL de status".
- O cliente verifica novamente o endpoint de status para ver se o trabalho foi concluído.
Por exemplo:
{
"status": "processing",
"check_status": "/jobs/12345/status"
}
Este padrão mantém ambos os lados satisfeitos: o cliente obtém reconhecimento instantâneo e o servidor ganha espaço para respirar.
Testando Fluxos de Trabalho 202 com Apidog

Testar um fluxo de API assíncrono é mais complexo do que testar uma chamada síncrona simples. É aqui que o Apidog se torna uma ferramenta inestimável.
Com o Apidog, você pode:
- Scriptar o Fluxo: Crie um cenário de teste que primeiro envia a requisição
POST
e valida se ela retorna um202
com umastatus_url
. - Extrair Variáveis: Use o scripting do Apidog para extrair automaticamente o
job_id
ou astatus_url
da resposta202
e salvá-los como uma variável de ambiente. - Testar Polling: Crie uma requisição
GET
subsequente que usa a variável extraída para chamar astatus_url
. Você pode configurar o Apidog para tentar novamente esta requisição até que obtenha um status "completed". - Validar o Resultado Final: Uma vez que o trabalho esteja concluído, escreva asserções para validar a resposta final da URL de download.
Isso permite automatizar o teste de toda a jornada assíncrona, garantindo confiabilidade e detectando regressões.
Como Testar Respostas 202 Accepted (com Apidog)

É aqui que o Apidog se destaca. Ao contrário das ferramentas estáticas, o Apidog permite que você:
- Envie requisições e simule diferentes códigos de status (como 202).
- Simule endpoints de API para testar fluxos de trabalho assíncronos.
- Documente APIs para que os desenvolvedores saibam o que esperar de uma resposta 202.
- Colabore com membros da equipe para refinar o tratamento assíncrono.
Com o Apidog, você pode construir e testar fluxos de trabalho 202 de ponta a ponta, desde a aceitação até a conclusão, sem trocar de ferramentas.
Armadilhas Potenciais e Equívocos Comuns
Dito isso, o 202 pode ser mal utilizado. Algumas armadilhas incluem:
- Assumir a conclusão: Só porque a requisição foi aceita não significa que foi bem-sucedida.
- Não fornecer acompanhamentos: As APIs devem incluir maneiras para os clientes verificarem o status do trabalho.
- Uso excessivo do 202: Não o use para operações simples e imediatas – isso confundirá os clientes.
Desafios e Melhores Práticas
Implementar o 202
corretamente exige um pensamento cuidadoso.
- Forneça um Endpoint de Status: Isso não é negociável. Você deve fornecer uma URL (via cabeçalho
Location
ou corpo da resposta) onde o cliente possa verificar o progresso e o resultado final da requisição. - A Idempotência é Crucial: Se um cliente não tem certeza se sua requisição foi processada (por exemplo, devido a um problema de rede), ele pode tentar novamente. Sua API deve ser projetada para lidar com requisições duplicadas de forma elegante, usando chaves de idempotência para evitar que o mesmo trabalho seja enfileirado várias vezes.
- Defina Expectativas Claras: Use o corpo da resposta para fornecer um tempo estimado de conclusão ou uma mensagem de status simples (
queued
,processing
,failed
,succeeded
). - Considere Webhooks: Para uma alternativa mais eficiente ao polling, permita que os clientes registrem uma URL de webhook que seu servidor chamará quando o trabalho for concluído.
- Planeje para Falhas: O trabalho pode falhar em segundo plano. Seu endpoint de status precisa comunicar as falhas e, potencialmente, fornecer códigos de motivo.
Melhores Práticas para Implementar o 202 Accepted
Se você está projetando APIs que retornam 202, tenha em mente estas melhores práticas:
- Sempre retorne contexto: Forneça um ID de trabalho ou URL de status.
- Documente claramente: Explique como os clientes devem verificar o progresso.
- Use webhooks sempre que possível: Notifique os clientes quando as tarefas terminarem.
- Não o use em excesso: Retorne 202 apenas para tarefas genuinamente assíncronas.
202 Accepted em APIs REST vs. GraphQL
- APIs REST: O 202 é comum porque as requisições frequentemente mapeiam para processos de longa duração.
- APIs GraphQL: Menos comum, já que o GraphQL favorece consultas síncronas, mas ainda é possível com mutações assíncronas.
Conclusão: Abraçando o Design Assíncrono
O código de status HTTP 202 Accepted
é uma ferramenta poderosa no kit de ferramentas do designer de API. Ele representa uma mudança de pensamento sobre APIs como simples mecanismos de requisição-resposta para pensá-las como sistemas para orquestrar fluxos de trabalho complexos do mundo real. O código de status 202 Accepted pode não ser o código HTTP mais famoso, mas desempenha um papel crítico em fluxos de trabalho de API assíncronos. Ele diz aos clientes: "Recebemos sua requisição, mas ainda estamos trabalhando nela."
Ao usar o 202
, você constrói APIs que são mais escaláveis, mais resilientes e que proporcionam uma experiência muito superior para os desenvolvedores que as utilizam e para os usuários finais que, em última análise, se beneficiam delas.
Ele reconhece que nem tudo no software acontece instantaneamente e fornece uma maneira padronizada e robusta de lidar com essa realidade.
Então, da próxima vez que você estiver projetando um endpoint para uma tarefa de longa duração, não o force a ser síncrono. Abrace a natureza assíncrona da tarefa. Retorne um 202 Accepted
, forneça uma URL de status e liberte seu aplicativo da tirania da requisição em espera. Se você está construindo ou testando APIs que retornam 202, precisa de ferramentas que permitam simular, testar e documentar esses fluxos de trabalho sem complicações. É exatamente isso que o Apidog oferece. Use uma ferramenta como o Apidog para garantir que sua implementação seja robusta, testável e um prazer de integrar. Pronto para simplificar seus testes e documentação de API? Baixe o Apidog gratuitamente hoje e torne o tratamento de códigos como o 202 Accepted fácil.