Consultar, renovar e cancelar emissão
Consulta o estado de uma pré-postagem nos Correios, renova uma vencida ou cancelada e cancela uma ativa.
Depois de emitida, a pré-postagem tem vida própria nos Correios: vence, é cancelada, é postada. Estas três ações mantêm a plataforma em sintonia. As três usam o id da emissão (o campo id de current_posting de um volume).
Consultar
Pergunta aos Correios o estado real da pré-postagem e atualiza a emissão. Não cria nem renova nada: é seguro chamar sempre que houver dúvida.
/api/v1/vendor/shipping/correios/postings/{postingId}/reconcileSellerConsulta o estado de uma emissão nos Correios
Parâmetros de caminho
postingIduuidobrigatórioid de current_posting).Exemplo de requisição: consultar
curl -X POST "$BASE_URL/api/v1/vendor/shipping/correios/postings/8f7e6d5c-4b3a-4291-a0b1-c2d3e4f5a6b7/reconcile" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Resposta: consultar
{
"posting": {
"id": "8f7e6d5c-4b3a-4291-a0b1-c2d3e4f5a6b7",
"volume_id": "4e5d6c7b-8a9f-4e1d-b2c3-a4b5c6d7e8f9",
"revision": 1,
"provider_preposting_id": "PR1234567890",
"tracking_code": "AA123456789BR",
"provider_state": "ACTIVE",
"lifecycle_state": "active",
"validity_expires_at": "2026-10-20T23:59:59Z",
"automatic_renewal_count": 0,
"create_attempts": 1,
"reconcile_attempts": 0,
"document_attempts": 1,
"manual_cancel_block": false,
"has_label": true,
"has_declaration": false,
"has_ar": false,
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:05Z",
"documents": [
{
"type": "label",
"available": true,
"downloads": []
}
],
"can_renew": false,
"can_cancel": true,
"can_download": true
},
"decision": {
"action": "preserve",
"message": "Etiqueta válida preservada.",
"clear_pending": true
}
}Campos da resposta
postingobjectA emissão já atualizada.
iduuidvolume_iduuidrevisioninteger1 é a primeira; uma renovação cria a 2 e assim por diante.provider_preposting_idstringtracking_codestringAA123456789BR). Ausente até criar.provider_statestringlifecycle_statestringcreatinguncertainactivepdf_pendingcanceledpostedexpiredreplacederrorcreating, uncertain, active, pdf_pending, canceled, posted, expired, replaced ou error.validity_expires_atstringautomatic_renewal_countintegercreate_attempts, reconcile_attempts, document_attemptsintegernext_attempt_atstringmanual_cancel_blockbooleantrue quando um cancelamento pede confirmação humana antes de qualquer reemissão.pending_type, pending_code, pending_message, recommended_actionstringhas_label, has_declaration, has_arbooleanlabel_downloaded_atstringreplaced_by_iduuiddocumentsarraylabel, declaration, ar): available e a lista downloads (quem baixou e quando).eventsarraycan_renew, can_cancel, can_downloadbooleancreated_at, updated_atstringdecisionobjectO que a plataforma decidiu.
actionstringpreserverecover_documentrenewreconcileblockpreserve (nada a fazer), recover_document (baixar de novo o PDF), renew (emitir outra), reconcile (consultar de novo) ou block (exige ação humana).pending_typestringlabel_missing, already_posted, canceled_requires_human, provider_unknown).messagestringrecommended_actionstringclear_pendingbooleanErros: consultar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 409 | Não foi possível seguir (por exemplo objeto já postado, pedido sem elegibilidade, resposta ambígua dos Correios). O corpo traz error e o decision. | {"error":"O objeto já foi postado e não pode ser reemitido.","decision":{"action":"block","pending_type":"already_posted","message":"O objeto já foi postado e não pode ser reemitido.","clear_pending":false}} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_orders, vendor_manage_orders, vendor_manage_fulfillments). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |
Renovar
Consulta os Correios e, se a pré-postagem venceu ou foi cancelada e o pedido ainda é elegível, emite uma nova (a antiga vira replaced). É também a única ação que destrava uma emissão cancelada, por ser uma decisão humana explícita. Se a etiqueta ainda é válida, nada é emitido (preserve).
/api/v1/vendor/shipping/correios/postings/{postingId}/renewSellerRenova uma emissão vencida ou cancelada
Parâmetros de caminho
postingIduuidobrigatórioid de current_posting).Exemplo de requisição: renovar
curl -X POST "$BASE_URL/api/v1/vendor/shipping/correios/postings/8f7e6d5c-4b3a-4291-a0b1-c2d3e4f5a6b7/renew" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Resposta: renovar
{
"posting": {
"id": "8f7e6d5c-4b3a-4291-a0b1-c2d3e4f5a6b7",
"volume_id": "4e5d6c7b-8a9f-4e1d-b2c3-a4b5c6d7e8f9",
"revision": 1,
"provider_preposting_id": "PR1234567890",
"tracking_code": "AA123456789BR",
"provider_state": "ACTIVE",
"lifecycle_state": "active",
"validity_expires_at": "2026-10-20T23:59:59Z",
"automatic_renewal_count": 0,
"create_attempts": 1,
"reconcile_attempts": 0,
"document_attempts": 1,
"manual_cancel_block": false,
"has_label": true,
"has_declaration": false,
"has_ar": false,
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:05Z",
"documents": [
{
"type": "label",
"available": true,
"downloads": []
}
],
"can_renew": false,
"can_cancel": true,
"can_download": true
},
"decision": {
"action": "preserve",
"message": "Etiqueta válida preservada.",
"clear_pending": true
}
}Campos da resposta
postingobjectA emissão já atualizada.
iduuidvolume_iduuidrevisioninteger1 é a primeira; uma renovação cria a 2 e assim por diante.provider_preposting_idstringtracking_codestringAA123456789BR). Ausente até criar.provider_statestringlifecycle_statestringcreatinguncertainactivepdf_pendingcanceledpostedexpiredreplacederrorcreating, uncertain, active, pdf_pending, canceled, posted, expired, replaced ou error.validity_expires_atstringautomatic_renewal_countintegercreate_attempts, reconcile_attempts, document_attemptsintegernext_attempt_atstringmanual_cancel_blockbooleantrue quando um cancelamento pede confirmação humana antes de qualquer reemissão.pending_type, pending_code, pending_message, recommended_actionstringhas_label, has_declaration, has_arbooleanlabel_downloaded_atstringreplaced_by_iduuiddocumentsarraylabel, declaration, ar): available e a lista downloads (quem baixou e quando).eventsarraycan_renew, can_cancel, can_downloadbooleancreated_at, updated_atstringdecisionobjectO que a plataforma decidiu.
actionstringpreserverecover_documentrenewreconcileblockpreserve (nada a fazer), recover_document (baixar de novo o PDF), renew (emitir outra), reconcile (consultar de novo) ou block (exige ação humana).pending_typestringlabel_missing, already_posted, canceled_requires_human, provider_unknown).messagestringrecommended_actionstringclear_pendingbooleanErros: renovar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 409 | Não foi possível seguir (por exemplo objeto já postado, pedido sem elegibilidade, resposta ambígua dos Correios). O corpo traz error e o decision. | {"error":"O objeto já foi postado e não pode ser reemitido.","decision":{"action":"block","pending_type":"already_posted","message":"O objeto já foi postado e não pode ser reemitido.","clear_pending":false}} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_orders, vendor_manage_orders, vendor_manage_fulfillments). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |
Cancelar
Cancela a pré-postagem nos Correios sem emitir outra. Responde 204, sem corpo. A emissão fica bloqueada para reemissão automática até que alguém use Renovar.
/api/v1/vendor/shipping/correios/postings/{postingId}/cancelSellerCancela uma emissão
Parâmetros de caminho
postingIduuidobrigatórioid de current_posting).Exemplo de requisição: cancelar
curl -X POST "$BASE_URL/api/v1/vendor/shipping/correios/postings/8f7e6d5c-4b3a-4291-a0b1-c2d3e4f5a6b7/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Resposta: cancelar
sem corpo / no bodyErros: cancelar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 409 | Não pôde cancelar (por exemplo já postada, ou não é sua). | {"error":"failed to cancel Correios preposting","detail":"..."} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_orders, vendor_manage_orders, vendor_manage_fulfillments). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |