Tenha uma conta
A API usa os dados de uma empresa cadastrada no DRDiM Nexus. Crie a conta ou peça acesso ao cliente que você vai integrar.
Uma API REST para o seu software conversar com o DRDiM Nexus: emita NF-e e NFS-e, receba o IBS e a CBS de cada nota, baixe o XML e o DANFE e sincronize produtos e clientes, tudo em JSON.
# requisição curl "https://www.saas.drdimtecnologia.com.br/api/v1/produtos?per_page=2" \ -H "X-Public-Key: pk_sua_chave_publica" \ -H "X-Secret-Key: sk_sua_chave_secreta" # resposta { "success": true, "data": { "current_page": 1, "data": [ { "id": 120, "nome": "Camiseta básica", "valor_venda": "49.90" }, { "id": 119, "nome": "Boné aba reta", "valor_venda": "39.90" } ], "per_page": 2, "total": 120 } }
Não há cadastro separado de desenvolvedor: a integração usa uma chave criada dentro da empresa no DRDiM Nexus.
A API usa os dados de uma empresa cadastrada no DRDiM Nexus. Crie a conta ou peça acesso ao cliente que você vai integrar.
No menu API & Integrações, em Chaves de API, crie uma chave para a integração e marque só as permissões de que ela precisa.
Envie as duas chaves nos cabeçalhos X-Public-Key e X-Secret-Key. A resposta vem em JSON.
Cada integração recebe uma chave pública e uma chave secreta. As duas vão nos cabeçalhos; não há login, sessão nem token para renovar.
https://www.saas.drdimtecnologia.com.br/api/v1
X-Public-Key
Identifica a integração. Começa com pk_.
X-Secret-Key
Autentica a requisição. Começa com sk_ e deve ficar só no seu servidor.
produtos.read ou clientes.create. A chave só acessa o que foi marcado ao criá-la.
curl "https://www.saas.drdimtecnologia.com.br/api/v1/clientes" \ -H "X-Public-Key: pk_sua_chave_publica" \ -H "X-Secret-Key: sk_sua_chave_secreta" \ -H "Accept: application/json"
Todos os caminhos partem de https://www.saas.drdimtecnologia.com.br/api/v1. A coluna Permissão mostra o que a chave precisa ter para usar a rota.
Catálogo de produtos da empresa: consulta, cadastro e sincronização em lote.
| Método | Caminho | O que faz | Permissão | Situação |
|---|---|---|---|---|
| GET | /produtos | Lista paginada, com busca por nome, referência ou código de barras | produtos.read |
Disponível |
| GET | /produtos/{id} | Detalhe de um produto | produtos.read |
Disponível |
| POST | /produtos | Cria um produto | produtos.create |
Disponível |
| PUT | /produtos/{id} | Altera um produto (PATCH também é aceito) | produtos.update |
Disponível |
| DELETE | /produtos/{id} | Exclui um produto | produtos.delete |
Disponível |
| POST | /produtos/sync | Cria ou atualiza vários produtos de uma vez, pela referência | produtos.sync |
Disponível |
Cadastro de clientes, com CPF/CNPJ e endereço.
| Método | Caminho | O que faz | Permissão | Situação |
|---|---|---|---|---|
| GET | /clientes | Lista paginada de clientes | clientes.read |
Disponível |
| GET | /clientes/{id} | Detalhe de um cliente | clientes.read |
Disponível |
| POST | /clientes | Cria um cliente | clientes.create |
Disponível |
| PUT | /clientes/{id} | Altera um cliente | clientes.update |
Disponível |
| DELETE | /clientes/{id} | Exclui um cliente | clientes.delete |
Disponível |
Emissão, cancelamento, consulta e download das notas fiscais da empresa.
| Método | Caminho | O que faz | Permissão | Situação |
|---|---|---|---|---|
| POST | /nfe | Registra a venda e emite a NF-e na SEFAZ | nfe.create |
Disponível |
| POST | /nfe/{id}/transmitir | Transmite de novo uma nota rejeitada, depois de corrigir o cadastro | nfe.create |
Disponível |
| POST | /nfe/{id}/cancelar | Cancela uma nota autorizada (justificativa de 15 caracteres ou mais) | nfe.cancel |
Disponível |
| GET | /nfe | Lista paginada, com filtro por período (data_inicio, data_fim) | nfe.read |
Disponível |
| GET | /nfe/{id} | Detalhe de uma nota, com cliente e itens | nfe.read |
Disponível |
| GET | /nfe/{id}/xml | Download do XML autorizado | nfe.read |
Disponível |
| GET | /nfe/{id}/pdf | Download do DANFE em PDF | nfe.read |
Disponível |
Notas fiscais de serviço pelo Sistema Nacional da NFS-e (gov.br/nfse): emissão, cancelamento, consulta, XML e PDF.
| Método | Caminho | O que faz | Permissão | Situação |
|---|---|---|---|---|
| POST | /nfse | Registra a nota de serviço e transmite ao Sistema Nacional | nfse.create |
Disponível |
| POST | /nfse/{id}/transmitir | Transmite de novo uma nota rejeitada, depois de corrigir o cadastro | nfse.create |
Disponível |
| GET | /nfse | Lista paginada, com filtro por estado e período | nfse.read |
Disponível |
| GET | /nfse/{id} | Detalhe de uma nota, com o serviço | nfse.read |
Disponível |
| POST | /nfse/{id}/cancelar | Cancela uma nota autorizada (justificativa de 15 caracteres ou mais) | nfse.cancel |
Disponível |
| GET | /nfse/{id}/xml | Download do XML autorizado | nfse.read |
Disponível |
| GET | /nfse/{id}/pdf | Download do PDF da nota (DANFSe) | nfse.read |
Disponível |
O POST /nfe registra a venda no DRDiM Nexus, baixa o estoque e transmite a nota à SEFAZ. A tributação vem do cadastro de cada produto e da natureza de operação; o seu sistema só informa cliente, itens e pagamento.
curl -X POST "https://www.saas.drdimtecnologia.com.br/api/v1/nfe" \ -H "X-Public-Key: pk_sua_chave_publica" \ -H "X-Secret-Key: sk_sua_chave_secreta" \ -H "Content-Type: application/json" \ -d '{ "cliente_id": 318, "itens": [ { "produto_id": 120, "quantidade": 2, "valor_unitario": 49.90 }, { "produto_id": 119, "quantidade": 1, "valor_unitario": 39.90 } ], "desconto": 9.70, "tipo_pagamento": "15", "parcelas": [ { "data_vencimento": "2026-11-10", "valor": 65.00 }, { "data_vencimento": "2026-12-10", "valor": 65.00 } ], "observacao": "Pedido 4471 da loja" }'
{
"success": true,
"message": "NFe emitida com sucesso",
"data": {
"id": 9041,
"numero": 1532,
"serie": 1,
"chave": "3526...0015",
"estado": "aprovado",
"xml": "https://www.saas.drdimtecnologia.com.br/api/v1/nfe/9041/xml",
"pdf": "https://www.saas.drdimtecnologia.com.br/api/v1/nfe/9041/pdf",
"ibs_cbs": {
"base_calculo": 130.00,
"aliquota_ibs": 0.10, "valor_ibs": 0.13,
"aliquota_cbs": 0.90, "valor_cbs": 1.17,
"valor_total": 1.30
}
}
}
cliente_id e itens
Obrigatórios. O cliente precisa ter cidade cadastrada; cada item leva produto_id, quantidade e valor_unitario.
natureza_id
Natureza de operação. Sem ela, vale a natureza padrão configurada no emitente.
tipo_pagamento
Código do meio de pagamento da NF-e: 01 dinheiro, 03 crédito, 04 débito, 15 boleto, 17 PIX. Sem ele, vale o padrão do emitente.
parcelas
Venda a prazo: cada parcela vira duplicata na nota e conta a receber no financeiro. A soma precisa fechar com o valor da nota.
desconto, acrescimo, frete, transportadora_id, observacao
Opcionais. Em frete, informe tipo (0 a 4, ou 9 para sem frete) e valor.
ibs_cbs na resposta
Base, alíquotas e valores de IBS e CBS da nota, calculados sobre o valor da operação (itens − desconto + acréscimo + frete). Vem null quando a empresa está no regime simplificado. O valor é o da apuração do DRDiM Nexus; o XML da nota ainda não destaca IBS/CBS.
POST /nfse
Envie cliente_id, servico_id, valor_servico e discriminacao. O tomador vem do cadastro do cliente; o código do serviço e as alíquotas, do cadastro do serviço. Opcionais: aliquota_iss, iss_retido, valor_deducoes, data_competencia.
422, com o motivo em data.erro e a venda salva em data.id.
Corrija o cadastro e chame POST /nfe/{id}/transmitir.
O POST /produtos/sync recebe uma lista e decide sozinho: cria o produto se a referencia ainda não existe, atualiza se já existe. Cada item precisa de referencia, nome e valor_venda.
curl -X POST "https://www.saas.drdimtecnologia.com.br/api/v1/produtos/sync" \ -H "X-Public-Key: pk_sua_chave_publica" \ -H "X-Secret-Key: sk_sua_chave_secreta" \ -H "Content-Type: application/json" \ -d '{ "produtos": [ { "referencia": "CAM-001", "nome": "Camiseta básica", "valor_venda": 49.90 }, { "referencia": "BON-014", "nome": "Boné aba reta", "valor_venda": 39.90 } ] }'
$ch = curl_init('https://www.saas.drdimtecnologia.com.br/api/v1/produtos/sync'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'X-Public-Key: ' . getenv('DRDIM_PUBLIC_KEY'), 'X-Secret-Key: ' . getenv('DRDIM_SECRET_KEY'), 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'produtos' => [ ['referencia' => 'CAM-001', 'nome' => 'Camiseta básica', 'valor_venda' => 49.90], ['referencia' => 'BON-014', 'nome' => 'Boné aba reta', 'valor_venda' => 39.90], ], ]), ]); $resposta = json_decode(curl_exec($ch), true); curl_close($ch); echo $resposta['data']['criados'] . ' criados, ' . $resposta['data']['atualizados'] . ' atualizados';
// Node.js 18+ (rode no servidor, nunca no navegador) const resposta = await fetch('https://www.saas.drdimtecnologia.com.br/api/v1/produtos/sync', { method: 'POST', headers: { 'X-Public-Key': process.env.DRDIM_PUBLIC_KEY, 'X-Secret-Key': process.env.DRDIM_SECRET_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ produtos: [ { referencia: 'CAM-001', nome: 'Camiseta básica', valor_venda: 49.90 }, { referencia: 'BON-014', nome: 'Boné aba reta', valor_venda: 39.90 }, ], }), }); const { data } = await resposta.json(); console.log(data.criados, 'criados,', data.atualizados, 'atualizados');
import os import requests resposta = requests.post( "https://www.saas.drdimtecnologia.com.br/api/v1/produtos/sync", headers={ "X-Public-Key": os.environ["DRDIM_PUBLIC_KEY"], "X-Secret-Key": os.environ["DRDIM_SECRET_KEY"], }, json={ "produtos": [ {"referencia": "CAM-001", "nome": "Camiseta básica", "valor_venda": 49.90}, {"referencia": "BON-014", "nome": "Boné aba reta", "valor_venda": 39.90}, ] }, ) dados = resposta.json()["data"] print(dados["criados"], "criados,", dados["atualizados"], "atualizados")
Toda resposta em JSON traz success. Quando dá certo, o conteúdo vem em data; quando falha, message explica o motivo.
| 401 | Chaves ausentes, chave pública inválida ou chave secreta inválida |
| 403 | Chave inativa ou expirada, ou sem permissão para o recurso |
| 404 | Registro não encontrado na empresa da chave |
| 409 | A nota não está no estado que a operação exige (ex.: cancelar nota não autorizada) |
| 422 | Dados inválidos (errors lista cada campo) ou nota rejeitada pela SEFAZ (data.erro traz o motivo) |
| 500 | Erro interno ao processar a requisição |
per_page
Itens por página nas listagens. O padrão é 50 e o máximo é 100. Use page para avançar.
search
Em produtos, busca por nome, referência ou código de barras.
data_inicio e data_fim
Em NF-e, filtram pela data da venda.
{
"success": true,
"message": "Sincronização concluída",
"data": {
"criados": 1,
"atualizados": 1,
"erros": []
}
}
{
"success": false,
"message": "Dados inválidos",
"errors": {
"produtos.0.valor_venda": ["O campo valor_venda é obrigatório."]
}
}
As duas chaves vão juntas em toda requisição. Guarde-as no backend, nunca em app, site ou repositório.
Cada chave tem a sua lista de permissões, por recurso e por ação. Uma integração de consulta não precisa poder excluir.
Uma chave por integração: dá para desativar ou regenerar uma delas sem afetar as outras.
A chave pertence a uma empresa e só enxerga os dados dela. O painel mostra a data e o IP do último uso.
Crie a conta, gere a sua chave em API & Integrações e faça a primeira chamada ainda hoje.