Exemplos em cURL
Setup
export MYSE_API_BASE="https://api.mysebr.com.br/nfemyse-v3/rest"export MYSE_API_TOKEN="seu_token_aqui"Health check
curl -i "$MYSE_API_BASE/health"Emitir NFCe e aguardar resultado (polling)
#!/bin/bashset -euo pipefail
BASE="$MYSE_API_BASE"TOKEN="$MYSE_API_TOKEN"
# 1. EmitirRESP=$(curl -sS -X POST "$BASE/nfce/emissao" \ -H "Authorization: Token $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "serie": "65", "cfop": "5102", "numero-origem": "VENDA-'$(date +%s)'", "tp_pagamento": "dinheiro", "itens": [ { "produto": "SKU-001", "quantidade": "1", "valor-unitario": "10.00" } ] }')
echo "Resposta emissão: $RESP"
STATUS=$(echo "$RESP" | jq -r .status)RECIBO=$(echo "$RESP" | jq -r .data.recibo)REQ_ID=$(echo "$RESP" | jq -r .meta.request_id)
if [ "$STATUS" != "001" ] && [ "$STATUS" != "050" ]; then echo "Erro na emissão (request_id=$REQ_ID): $RESP" >&2 exit 1fi
echo "Recibo: $RECIBO (request_id=$REQ_ID)"
# 2. PollingWAIT=5TERM_REGEX='^(004|010|900|999)$'
for i in $(seq 1 30); do sleep $WAIT RESP=$(curl -sS "$BASE/nfce/cupom/$RECIBO" \ -H "Authorization: Token $TOKEN") STATUS=$(echo "$RESP" | jq -r .status) echo "[$i] status=$STATUS"
if [[ $STATUS =~ $TERM_REGEX ]]; then echo "Status terminal: $STATUS" echo "$RESP" | jq . exit 0 fi
# Backoff até 30s WAIT=$(echo "$WAIT * 1.5" | bc | awk '{ printf "%d", $1 < 30 ? $1 : 30 }')done
echo "Timeout aguardando recibo $RECIBO" >&2exit 1Listar NFes com paginação
PAGE=1SIZE=20
while :; do RESP=$(curl -sS "$MYSE_API_BASE/nfe?page=$PAGE&page_size=$SIZE" \ -H "Authorization: Token $MYSE_API_TOKEN")
STATUS=$(echo "$RESP" | jq -r .status) [ "$STATUS" != "005" ] && { echo "Erro: $RESP"; break; }
COUNT=$(echo "$RESP" | jq '.data | length') echo "Página $PAGE: $COUNT registros"
echo "$RESP" | jq -c '.data[]'
[ "$COUNT" -lt "$SIZE" ] && break PAGE=$((PAGE + 1))doneHelper de polling reutilizável
# Função genérica: aguarda recibo até status terminal.# Uso: aguardar_recibo /nfe/nota $RECIBOaguardar_recibo() { local PATH_BASE="$1" local RECIBO="$2" local TERM_REGEX='^(004|010|900|999)$' local WAIT=5
for i in $(seq 1 30); do sleep $WAIT RESP=$(curl -sS "$MYSE_API_BASE${PATH_BASE}/$RECIBO" \ -H "Authorization: Token $MYSE_API_TOKEN") STATUS=$(echo "$RESP" | jq -r .status) echo "[$i] status=$STATUS"
if [[ $STATUS =~ $TERM_REGEX ]]; then echo "$RESP" return 0 fi WAIT=$(echo "$WAIT * 1.5" | bc | awk '{ printf "%d", $1 < 30 ? $1 : 30 }') done echo "Timeout aguardando recibo $RECIBO" >&2 return 1}Emitir NF-e (com transporte completo)
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nfe/emissao" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "serie": "1", "cfop": "5102", "numero-origem": "PED-'$(date +%s)'", "tipo": "S", "finalidade": "N", "valor-despesas": "0.00", "cliente": "12345678000199", "transporte": { "modalidade": "0", "transportadora": "98765432000111", "placa-veiculo": "ABC-1D23", "valor-frete": "150.00", "valor-seguro": "0.00", "peso-bruto": "5.5", "peso-liquido": "5.0", "quantidade-volume": "1", "especie-volume": "Caixa", "marca-volume": "Embalagem padrao" }, "itens": [ { "produto": "SKU-001", "quantidade": "2", "valor-unitario": "89.90" } ], "faturas": [ { "valor": "179.80", "data": "2026-06-15" } ] }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)echo "Recibo NF-e: $RECIBO"aguardar_recibo /nfe/nota "$RECIBO"Cancelar NF-e
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nfe/cancelamento" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "chave": "35260512345678000199550010000000011000000010", "motivo": "Cancelamento solicitado pelo cliente — pedido refeito." }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)aguardar_recibo /nfe/cancelamento "$RECIBO"Lançar carta de correção (CC-e)
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nfe/correcao" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "chave": "35260512345678000199550010000000011000000010", "motivo": "Correcao da descricao do item 3 — modelo correto: XYZ-2." }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)aguardar_recibo /nfe/correcao "$RECIBO"Cancelar NFC-e
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nfce/cancelamento" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "chave": "35260512345678000199650010000000011000000010", "motivo": "Cancelamento de cupom solicitado pelo cliente." }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)aguardar_recibo /nfce/cancelamento "$RECIBO"Emitir NFS-e (Nota Fiscal de Serviço)
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nfse/emissao" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "numero-origem": "OS-'$(date +%s)'", "observacao": "Servico de consultoria realizado em maio/2026.", "nome-contato": "Joao Silva", "telefone-contato": "11987654321", "data-fim": "2026-05-31", "cliente": "12345678000199", "itens": [ { "produto": "SRV-CONSULT", "quantidade": "10", "valor-unitario": "250.00" } ] }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)aguardar_recibo /nfse/nota "$RECIBO"Cancelar NFS-e
curl -sS -X POST "$MYSE_API_BASE/nfse/cancelamento" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "chave": "chave_nfse_aqui", "motivo": "Cancelamento solicitado pelo tomador — servico nao realizado." }'Reconhecer nota de fornecedor (MD-e)
# Códigos:# 210200 — Confirmação da operação (terminal, irreversível)# 210210 — Ciência da operação (provisório, 15 dias)# 210220 — Desconhecimento da operação# 210240 — Operação não realizada
RESP=$(curl -sS -X POST "$MYSE_API_BASE/nffornecedor/reconhecimento" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "chave": "35260512345678000199550010000000011000000010", "codigo-reconhecimento": "210200" }')
RECIBO=$(echo "$RESP" | jq -r .data.recibo)echo "Recibo MD-e: $RECIBO"# Consultar resultado:curl -sS "$MYSE_API_BASE/nffornecedor/$RECIBO" \ -H "Authorization: Token $MYSE_API_TOKEN" | jq .Capturar headers de rate limit
curl -sS -D - "$MYSE_API_BASE/nfe?page=1&page_size=1" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -o /dev/null \ | grep -i -E "x-request-id|x-ratelimit"Saída esperada:
X-Request-Id: req_01HXY8ZG3J4K5M6N7P8Q9R0S1TX-RateLimit-Limit: 150000X-RateLimit-Remaining: 149873X-RateLimit-Reset: 1715600000Tratamento de erro em shell
call_api() { local METHOD="$1" local PATH="$2" local BODY="${3:-}"
local CURL_ARGS=(-sS -X "$METHOD" -H "Authorization: Token $MYSE_API_TOKEN" -H "Content-Type: application/json" -D /tmp/myse-headers.txt)
[ -n "$BODY" ] && CURL_ARGS+=(-d "$BODY")
RESP=$(curl "${CURL_ARGS[@]}" "$MYSE_API_BASE$PATH") REQ_ID=$(grep -i "x-request-id:" /tmp/myse-headers.txt | awk '{print $2}' | tr -d '\r\n') STATUS=$(echo "$RESP" | jq -r .status)
case "$STATUS" in 001|002|003|004|005|010) echo "$RESP" ;; 050) echo "Duplicidade (use recibo retornado): $RESP" >&2 echo "$RESP" ;; 900) echo "Rejeição SEFAZ (request_id=$REQ_ID): $RESP" >&2 exit 2 ;; 999) echo "Erro interno (request_id=$REQ_ID): $RESP" >&2 exit 3 ;; *) echo "Status desconhecido $STATUS (request_id=$REQ_ID): $RESP" >&2 exit 99 ;; esac}Health check (sem autenticação)
curl -i "$MYSE_API_BASE/health"# HTTP/1.1 200 OK# {"status":"ok","database":"ok","timestamp":"2026-05-13T14:32:01Z"}Alterar nota antes da emissão (PUT)
Disponível em NF-e (/nfe/{id}), NFC-e (/nfce/{id}) e NFS-e (/nfse/{id}).
Só funciona enquanto a nota ainda não foi submetida para emissão.
# Substitua o caminho e o ID conforme o documentocurl -X PUT "$MYSE_API_BASE/nfe/12345" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "serie": "1", "cfop": "5102", "cliente": "12345678000199", "itens": [ { "produto": "SKU-001", "quantidade": "3", "valor-unitario": "89.90" } ] }'Consulta detalhada (NF-e/NFC-e completa por recibo)
Diferente do polling rápido (/nota/{recibo}), retorna todos os dados:
itens, cliente, transporte, faturas, notas referenciadas, dados SEFAZ.
# NF-e completacurl "$MYSE_API_BASE/nfe/nota/$RECIBO/completa" \ -H "Authorization: Token $MYSE_API_TOKEN" | jq .
# NFC-e completacurl "$MYSE_API_BASE/nfce/cupom/$RECIBO/completa" \ -H "Authorization: Token $MYSE_API_TOKEN" | jq .Listagens (paginação)
# NF-es paginadascurl "$MYSE_API_BASE/nfe?page=1&page_size=20" \ -H "Authorization: Token $MYSE_API_TOKEN"
# NFC-escurl "$MYSE_API_BASE/nfce?page=1&page_size=50" \ -H "Authorization: Token $MYSE_API_TOKEN"
# NFS-es com filtro de data (ISO YYYY-MM-DD)curl "$MYSE_API_BASE/nfse?dataInicial=2026-05-01&page=1&page_size=20" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Notas de fornecedorcurl "$MYSE_API_BASE/nffornecedor?page=1&page_size=20" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Forma legada (path-based) — mantida por compatibilidadecurl "$MYSE_API_BASE/nfe/paginacao/1/20" \ -H "Authorization: Token $MYSE_API_TOKEN"Clientes (CRUD completo)
# Cadastrar pessoa físicacurl -X POST "$MYSE_API_BASE/clientes" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tipo": "F", "nome": "Joao da Silva", "cpf": "12345678901", "rg": "MG1234567", "consumidor-final": "1", "contato": { "email": "[email protected]", "telefone": "11987654321" }, "endereco": { "cep": "01310100", "rua": "Av. Paulista", "numero": "1000", "bairro": "Bela Vista", "cidade": "Sao Paulo", "estado": "SP" } }'
# Cadastrar pessoa jurídicacurl -X POST "$MYSE_API_BASE/clientes" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tipo": "J", "razao-social": "Empresa Exemplo Ltda", "nome-fantasia": "Empresa Exemplo", "cnpj": "12345678000199", "inscricao-municipal": "1234567", "tipo-inscricao-estadual": "1", "inscricao-estadual": "123456789", "consumidor-final": "0", "contato": { "email": "[email protected]", "telefone": "1133334444" }, "endereco": { "cep": "01310100", "rua": "Av. Paulista", "numero": "1000", "bairro": "Bela Vista", "cidade": "Sao Paulo", "estado": "SP" } }'
# Consultar por CPF (11 dígitos) ou CNPJ (14 dígitos)curl "$MYSE_API_BASE/clientes/12345678000199" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Buscar por nome (parcial)curl "$MYSE_API_BASE/clientes/busca/exemplo" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Top 20 clientes mais relevantes da empresacurl "$MYSE_API_BASE/clientes/busca/top_clientes" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Atualizarcurl -X PUT "$MYSE_API_BASE/clientes/12345678000199" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tipo": "J", "razao-social": "Empresa Exemplo (Novo Nome) Ltda" }'
# Excluircurl -X DELETE "$MYSE_API_BASE/clientes/12345678000199" \ -H "Authorization: Token $MYSE_API_TOKEN"Produtos (CRUD completo)
# Cadastrar produto (com configuração fiscal por CFOP/estado)curl -X POST "$MYSE_API_BASE/produtos" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "referencia": "SKU-001", "nome": "Camiseta Polo Tamanho M", "valor": "89.90", "medida": "UN", "categoria": "Vestuario", "ncm": "61051000", "origem": "0", "cfop-preferencial": "5102", "tipo-produto": "P", "configuracoes-fiscais": [{ "cfop": "5102", "configuracoes": { "ipi": { "ipi-cst": "53", "ipi-aliquota": "0.00" }, "pis-cofins": { "pis-cst": "01", "pis-aliquota": "1.65", "cofins-cst": "01", "cofins-aliquota": "7.60" }, "icms": { "estados": [{ "estado": "SP", "icms-cst": "00", "modalidade-base-calculo": "0", "aliquotas": { "aliquota-icms": "18.00" } }] } } }] }'
# Cadastrar serviço (tipo S, com código de serviço municipal)curl -X POST "$MYSE_API_BASE/produtos" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "referencia": "SRV-CONSULT", "nome": "Consultoria tecnica (hora)", "valor": "250.00", "medida": "H", "tipo-produto": "S", "codigo-servico": "1.04" }'
# Consultar por referênciacurl "$MYSE_API_BASE/produtos/SKU-001" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Buscar por nome (1º resultado)curl "$MYSE_API_BASE/produtos/nome/Camiseta" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Listar paginado com busca por nome (legado)# Use _todos para não filtrarcurl "$MYSE_API_BASE/produtos/paginacao/1/20/_todos" \ -H "Authorization: Token $MYSE_API_TOKEN"
curl "$MYSE_API_BASE/produtos/paginacao/1/20/Camiseta" \ -H "Authorization: Token $MYSE_API_TOKEN"
# Atualizarcurl -X PUT "$MYSE_API_BASE/produtos/SKU-001" \ -H "Authorization: Token $MYSE_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "referencia": "SKU-001", "nome": "Camiseta Polo M (Novo)", "valor": "99.90" }'
# Excluircurl -X DELETE "$MYSE_API_BASE/produtos/SKU-001" \ -H "Authorization: Token $MYSE_API_TOKEN"