MeuPedido/developer

Referência de API

URL base, autenticação, erros, limites e downloads da especificação OpenAPI e da coleção Postman.

Contrato da API Open Delivery do MeuPedido, versão 1.4.0 do padrão (Abrasel), módulos Order e Merchant. Esta página resume o que vale para todas as operações; cada operação tem a própria página com parâmetros, esquemas e exemplos, gerada a partir da especificação OpenAPI.

URL base

https://api.meupedido.io/open-delivery

Toda rota desta referência é relativa a essa URL. Há um único ambiente, o de produção. Para testar sem afetar uma loja real, use uma loja de teste: os pedidos dela chegam com test: true.

Só HTTPS. Chamadas de navegador são aceitas apenas a partir de https://developer.meupedido.io (playground do portal); integrações rodam servidor a servidor.

Autenticação

OAuth 2.0 client_credentials. Troque client_id e client_secret por um token em POST /oauth/token e envie o token em toda chamada:

Authorization: Bearer <access_token>
ItemValor
Formato do tokenJWT HS256, com claims merchant_id, client_id e scope
Validade3600 segundos, sem refresh token
Formato do client_idmp_ seguido de 24 caracteres hexadecimais, ex.: mp_4f8a1c9e2b7d3a6f0e5c8b1d
LojaUma credencial pertence a uma única loja; o merchantId das rotas precisa ser o dela
Sem token401 com corpo vazio e header WWW-Authenticate
Credencial pausada ou revogada401 com { "error": "invalid_token" } em qualquer chamada, imediatamente

Detalhes, incluindo as três formas de enviar as credenciais, em Autenticação.

Escopos

Definidos na criação da credencial. Não são editáveis: para mudar, o lojista cria outra credencial.

EscopoLibera
orders:readGET /v1/orders/{orderId}, GET /v1/events:polling, POST /v1/events/acknowledgment
orders:writeTodas as ações em POST /v1/orders/{orderId}/...
merchant:readGET /v1/merchant/{merchantId}
catalog:readGET /v1/merchant/{merchantId}/menus

Chamada sem o escopo necessário: 403 com { "error": "insufficient_scope", "message": "..." }.

Formatos de erro

O endpoint de token segue o formato do RFC 6749 (error e error_description); as demais rotas usam error e message.

StatusFormatoerrorQuando
400{ error, error_description }invalid_requestCorpo do token incompleto ou malformado
400{ error, error_description }unsupported_grant_typegrant_type diferente de client_credentials
400{ error, message }invalid_idempotency_keyIdempotency-Key acima de 128 caracteres; nada é executado
400{ error, message }invalid_cancellation_reasonreason do cancelamento acima de 500 caracteres; o pedido continua como estava
400ValidationProblemDetails(campo errors)Corpo inválido em rota de negócio
401{ error }invalid_clientCredencial inexistente, segredo errado, pausada ou revogada, no endpoint de token
401{ error, message }invalid_tokenCredencial pausada ou revogada, nas demais rotas
401corpo vazio(header WWW-Authenticate)Sem token, token expirado ou inválido
403{ error, message }insufficient_scopeToken sem o escopo exigido
404{ error, message }order_not_foundorderId desconhecido ou de outra loja
404ProblemDetails(campos type, title, status, traceId)Rota inexistente, merchantId de outra loja ou orderId que não é GUID
409{ error, message }idempotency_key_reuseMesma Idempotency-Key com requisição diferente
413{ error, error_description }invalid_requestCorpo do endpoint de token acima de 4 KB
415{ error, error_description }invalid_requestContent-Type não suportado no endpoint de token
422{ error, message }invalid_transitionAção incompatível com o estado do pedido
429{ error, message }rate_limit_exceededLimite de requisições excedido (por credencial ou por IP); header Retry-After
429{ error, error_description }rate_limit_exceededDez falhas de autenticação na mesma credencial em um minuto, no endpoint de token; header Retry-After: 60
500{ error, message, traceId }internal_errorFalha interna; informe o traceId ao suporte

Exemplos de cada formato e o que fazer em cada caso em Boas práticas.

Limites

LimiteValor
Chamadas autenticadas, por credencial600 por minuto
POST /oauth/token, por IP60 por minuto
Corpo de POST /oauth/token4 KB
Falhas de autenticação em POST /oauth/token, por credencial10 por minuto (o segredo correto continua sendo aceito)
limit em GET /v1/events:pollingPadrão 100, máximo 200
Replay por Idempotency-Key24 horas
Timeout de entrega de webhook10 segundos
Retenção de eventos confirmados30 dias

Ao exceder um limite de requisições: 429 com Retry-After: 60.

Datas e valores

  • Datas em ISO 8601, UTC, com sufixo Z: 2026-09-19T18:42:07Z.
  • Valores monetários como { "value": 49.9, "currency": "BRL" }.
  • Ids de pedido e de evento são GUIDs.
  • Campos sem valor vêm como null, nunca são omitidos.

Downloads

ArquivoPara quê
Especificação OpenAPI (YAML)Gerar clientes, validar requisições, alimentar agentes de IA
Especificação OpenAPI (JSON)O mesmo contrato, para ferramentas que preferem JSON
Coleção PostmanExecutar todas as operações com variáveis para credenciais e ids
llms.txtÍndice de toda a documentação, para agentes de IA
llms-full.txtA documentação inteira em um único Markdown

Cada página de documentação também existe em Markdown: acrescente .md à URL, como em /pt-BR/docs/getting-started/authentication.md. Veja Para agentes de IA.

Operações

Autenticação

OperaçãoRotaEscopo
Obter tokenPOST /oauth/tokennenhum

Loja e cardápio

OperaçãoRotaEscopo
Buscar lojaGET /v1/merchant/{merchantId}merchant:read
Buscar cardápioGET /v1/merchant/{merchantId}/menuscatalog:read

Pedidos

OperaçãoRotaEscopo
Buscar pedidoGET /v1/orders/{orderId}orders:read
ConfirmarPOST /v1/orders/{orderId}/confirmorders:write
Iniciar preparo Extensão MeuPedidoPOST /v1/orders/{orderId}/startPreparationorders:write
Pronto para retiradaPOST /v1/orders/{orderId}/readyForPickuporders:write
DespacharPOST /v1/orders/{orderId}/dispatchorders:write
Retirado Extensão MeuPedidoPOST /v1/orders/{orderId}/pickedUporders:write
EntreguePOST /v1/orders/{orderId}/deliveredorders:write
CancelarPOST /v1/orders/{orderId}/requestCancellationorders:write

Eventos

OperaçãoRotaEscopo
Consultar eventosGET /v1/events:pollingorders:read
Confirmar eventosPOST /v1/events/acknowledgmentorders:read

Webhooks

OperaçãoRotaEscopo
Evento de pedido Extensão MeuPedidoPOST na URL configurada pelo lojista(assinatura X-MeuPedido-Signature)

Próximos passos

Nesta página