Guides
API Reference
Guides
API Reference
  1. Guides
  • TokenOne API - Referência Completa
  1. Guides

TokenOne API - Referência Completa

Bem-vindo à documentação da TokenOne CaaS API — a solução completa para criação e gestão de carteiras (smart accounts ERC-4337) e tokens ERC-20 nas redes Polygon e XDC, com deployment 100% gasless.
Base URL: https://caas-api.tokenone.com.br
Todos os endpoints abaixo são relativos a essa base (ex.: POST /v1/wallets → https://caas-api.tokenone.com.br/v1/wallets).

🔐 Autenticação#

Como obter sua API Key#

1.
Acesse o CaaS TokenOne e faça login.
2.
No menu lateral, abra API Keys.
3.
Ao criar sua conta, uma chave tk_test_ já é gerada automaticamente (sandbox).
4.
A chave de produção (tk_live_) é provisionada mediante solicitação ao suporte.
As APIs de dados (wallets, tokens, transfers, transactions, audit) são autenticadas via API Key no header:
x-api-key: SUA_API_KEY

Chaves de Teste e Produção (test / live)#

A TokenOne segue o modelo Stripe: o ambiente é determinado pelo prefixo da própria chave, não pela URL. A base é sempre a mesma (caas-api.tokenone.com.br).
PrefixoAmbienteRedes permitidasDados
tk_test_…Testnet (Sandbox)polygon-amoy, xdc-testnetIsolados (dados de teste)
tk_live_…Mainnet (Produção)polygon-mainnet, xdc-mainnetReais (on-chain)
Uma chave tk_test_ só opera em redes de teste e uma tk_live_ só em mainnets. Usar uma rede incompatível com o ambiente da chave retorna erro de validação.

🌐 Ambientes#

AmbienteAPI KeyRedesUso
Sandboxtk_test_…Polygon Amoy, XDC ApothemDesenvolvimento e testes, sem custo/valor real
Produçãotk_live_…Polygon Mainnet, XDC NetworkOperações reais on-chain
Não há URL separada por ambiente — a mesma https://caas-api.tokenone.com.br atende os dois; o que muda é a chave.

📚 Recursos da API#

RecursoDescriçãoEndpoints
WalletsCarteiras digitais (smart accounts ERC-4337)3
TokensTokens ERC-20 personalizados9
TransfersTransferências de tokens ERC-203
TransactionsExecução de chamadas de contrato arbitrárias1
AuditLogs de auditoria1
Total: 17 endpoints de dados REST (autenticados por x-api-key).
O dashboard usa endpoints de console adicionais (login, gestão de API keys, webhook secret) autenticados por JWT (Authorization: Bearer). Eles não fazem parte desta referência de integração.

🌐 Redes Suportadas#

RedeIdentificadorChain IDTipoExplorer
Polygon Mainnetpolygon-mainnet137Produção (tk_live_)polygonscan.com
Polygon Amoypolygon-amoy80002Testnet (tk_test_)amoy.polygonscan.com
XDC Networkxdc-mainnet50Produção (tk_live_)xdcscan.io
XDC Apothemxdc-testnet51Testnet (tk_test_)apothem.xdcscan.io

💼 1. Wallets#

1.1 Criar Wallet#

Cria uma carteira digital (smart account) com deployment gasless.
Endpoint: POST /v1/wallets
Request:
{
  "network": "xdc-testnet",
  "extRef": "customer-12345"
}
Parâmetros:
CampoTipoObrigatórioDescrição
networkstringSimRede blockchain (deve ser compatível com o ambiente da chave)
extRefstringNãoReferência externa para seu sistema
Response: 201 Created
{
  "id": "wallet-uuid",
  "address": "0x1234...5678",
  "network": "xdc-testnet",
  "status": "active",
  "extRef": "customer-12345",
  "createdAt": "2026-06-03T10:00:00Z"
}
✨ Vantagem: Deployment 100% gasless via paymaster — seus usuários não precisam de POL/MATIC/XDC.

1.2 Listar Wallets#

Lista todas as wallets com paginação e filtros.
Endpoint: GET /v1/wallets
Query Parameters:
ParâmetroTipoDescriçãoExemplo
pageintegerNúmero da página (padrão: 1)1
pageSizeintegerItens por página (padrão: 20, máx: 100)50
networkstringFiltrar por redepolygon-mainnet
statusstringFiltrar por statusactive
addressstringFiltrar por endereço0x123...
extRefstringFiltrar por referência externacustomer-123
Exemplo:
Response: 200 OK
{
  "data": [
    {
      "id": "wallet-uuid",
      "address": "0x1234...5678",
      "network": "xdc-testnet",
      "status": "active",
      "extRef": "customer-12345",
      "createdAt": "2026-06-03T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalItems": 150,
    "totalPages": 8
  }
}

1.3 Obter Wallet por Endereço#

Retorna detalhes de uma wallet específica incluindo saldos.
Endpoint: GET /v1/wallets/{address}
Path Parameters:
ParâmetroTipoDescrição
addressstringEndereço da wallet (0x...)
Exemplo:
Response: 200 OK
{
  "id": "wallet-uuid",
  "address": "0x1234...5678",
  "network": "xdc-testnet",
  "status": "active",
  "balance": {
    "native": "1.5",
    "tokens": [
      {
        "contractAddress": "0xtoken...",
        "symbol": "DEBXYZ25",
        "balance": "1000.0",
        "decimals": 6
      }
    ]
  },
  "createdAt": "2026-06-03T10:00:00Z"
}

🪙 2. Tokens#

2.1 Criar Token (Deploy)#

Faz deploy de um novo token ERC-20 personalizado.
Endpoint: POST /v1/tokens
Request:
{
  "walletAddress": "0x1234...5678",
  "name": "Debenture Empresa XYZ 2025",
  "symbol": "DEBXYZ25",
  "decimals": 6,
  "network": "xdc-testnet",
  "initialSupplyTokens": "10000000",
  "maxSupplyTokens": "100000000",
  "metadata": {
    "description": "Debenture emitida pela Empresa XYZ com vencimento em 2025",
    "website": "https://empresaxyz.com.br",
    "cnpj": "12.345.678/0001-90"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
walletAddressstringSimEndereço da wallet que será owner do token
namestringSimNome do token (máx: 64 caracteres)
symbolstringSimSímbolo do token (máx: 10 caracteres)
decimalsintegerSimCasas decimais: deve ser 6 (fixado no contrato)
networkstringSimRede blockchain (compatível com o ambiente da chave)
initialSupplyTokensstringNãoSupply inicial em unidades legíveis (ex: "1000000")
maxSupplyTokensstringNãoSupply máximo em unidades legíveis
metadataobjectNãoMetadados adicionais
Response: 201 Created
{
  "token": {
    "id": "token-uuid",
    "contractAddress": "0xtoken...abc",
    "name": "Debenture Empresa XYZ 2025",
    "symbol": "DEBXYZ25",
    "decimals": 6,
    "network": "xdc-testnet",
    "deployed": true
  },
  "transactionHash": "0xtxhash...",
  "explorerUrls": {
    "transaction": "https://apothem.xdcscan.io/tx/0x...",
    "token": "https://apothem.xdcscan.io/token/0x..."
  }
}
Os explorerUrls variam conforme a rede (polygonscan.com / amoy.polygonscan.com / xdcscan.io / apothem.xdcscan.io).

2.2 Listar Tokens#

Lista todos os tokens com filtros e paginação.
Endpoint: GET /v1/tokens
Query Parameters:
ParâmetroTipoDescrição
pageintegerNúmero da página
pageSizeintegerItens por página
networkstringFiltrar por rede
symbolstringFiltrar por símbolo
contractAddressstringFiltrar por endereço
Response: 200 OK
{
  "data": [
    {
      "id": "token-uuid",
      "contractAddress": "0xtoken...abc",
      "name": "Debenture Empresa XYZ 2025",
      "symbol": "DEBXYZ25",
      "decimals": 6,
      "network": "xdc-testnet",
      "totalSupply": "10000000",
      "deployed": true
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalItems": 45,
    "totalPages": 3
  }
}

2.3 Mint (Criar) Tokens#

Cria novos tokens e envia para um destinatário.
Endpoint: POST /v1/tokens/{contractAddress}/mint
Path Parameters:
ParâmetroTipoDescrição
contractAddressstringEndereço do contrato do token
Request:
{
  "amountTokens": "1000",
  "to": "0xrecipient...address",
  "reason": "Recompensa por compra - Pedido #12345",
  "metadata": {
    "orderId": "12345",
    "category": "purchase-reward"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
amountTokensstringSimQuantidade em tokens (ex: "100" ou "1.5")
tostringSimEndereço do destinatário
reasonstringNão*Motivo da operação (*recomendado para auditoria)
metadataobjectNãoDados adicionais estruturados
Response: 200 OK
{
  "transactionHash": "0xtx...hash",
  "amount": "1000",
  "to": "0xrecipient...address",
  "supplyInfo": {
    "totalSupplyBefore": "1000000",
    "totalSupplyAfter": "1001000"
  }
}

2.4 Burn (Queimar) Tokens#

Queima tokens do supply da wallet owner.
Endpoint: POST /v1/tokens/{contractAddress}/burn
Request:
{
  "amountTokens": "500",
  "reason": "Programa de buyback - Junho 2026"
}
Parâmetros:
CampoTipoObrigatórioDescrição
amountTokensstringSimQuantidade a queimar
reasonstringNão*Motivo (*recomendado)
metadataobjectNãoDados adicionais
Response: 200 OK
{
  "transactionHash": "0xtx...hash",
  "amountBurned": "500",
  "supplyInfo": {
    "totalSupplyBefore": "1001000",
    "totalSupplyAfter": "1000500",
    "percentageBurned": "0.05%"
  }
}

2.5 Burn From (Queimar de Carteira)#

Queima tokens de uma carteira específica (operação de custódia).
Endpoint: POST /v1/tokens/{contractAddress}/burn-from
Request:
{
  "from": "0xuser...address",
  "amountTokens": "250",
  "reason": "Compliance - Ordem judicial #123/2025",
  "metadata": {
    "courtOrder": "123/2025",
    "court": "Tribunal Federal"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
fromstringSimEndereço da carteira
amountTokensstringSimQuantidade a queimar
reasonstringNão*Motivo (*altamente recomendado)
metadataobjectNãoDados de compliance

2.6 Pausar Token#

Pausa TODAS as transferências do token (emergência).
Endpoint: POST /v1/tokens/{contractAddress}/pause
Request:
{
  "reason": "Pausa emergencial - Vulnerabilidade detectada",
  "metadata": {
    "incidentId": "SEC-2026-001",
    "severity": "CRITICAL"
  }
}
Efeito: Bloqueia todas as transferências do token até despausar.

2.7 Despausar Token#

Reativa as transferências de um token pausado.
Endpoint: POST /v1/tokens/{contractAddress}/unpause
Request:
{
  "reason": "Retomar operações - Vulnerabilidade corrigida",
  "metadata": {
    "incidentId": "SEC-2026-001",
    "patchVersion": "v2.1.0"
  }
}

2.8 Bloquear Usuário#

Adiciona um endereço à blocklist (não pode enviar nem receber tokens).
Endpoint: POST /v1/tokens/{contractAddress}/blocklist
Request:
{
  "userAddress": "0xuser...block",
  "reason": "Bloqueio por ordem judicial - Processo 456/2025",
  "metadata": {
    "processNumber": "456/2025",
    "court": "Tribunal de Justiça",
    "orderDate": "2025-12-20"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
userAddressstringSimEndereço a bloquear
reasonstringNão*Motivo (*altamente recomendado)
metadataobjectNãoDados legais/compliance

2.9 Desbloquear Usuário#

Remove um endereço da blocklist.
Endpoint: POST /v1/tokens/{contractAddress}/blocklist/{userAddress}/unblock
Path Parameters:
ParâmetroTipoDescrição
contractAddressstringEndereço do token
userAddressstringEndereço a desbloquear
Request:
{
  "reason": "Desbloqueio - Processo encerrado",
  "metadata": {
    "processNumber": "456/2025",
    "closureDate": "2025-12-30"
  }
}

💸 3. Transfers#

3.1 Criar Transferência#

Transfere tokens ERC-20 entre carteiras.
Endpoint: POST /v1/transfers
Request:
{
  "from": "0xsender...address",
  "to": "0xrecipient...address",
  "tokenAddress": "0xtoken...address",
  "amountTokens": "100",
  "reason": "Pagamento por serviços - Nota Fiscal #789",
  "metadata": {
    "invoiceId": "789",
    "service": "Consultoria"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
fromstringSimEndereço da wallet de origem
tostringSimEndereço do destinatário
tokenAddressstringSimEndereço do token ERC-20
amountTokensstringSimQuantidade (ex: "100" ou "1.5")
reasonstringNão*Motivo (*recomendado)
metadataobjectNãoDados adicionais
⚠️ Importante: Apenas tokens ERC-20 são suportados. Transferências do token nativo (POL/MATIC/XDC) não estão disponíveis.
Response: 200 OK
{
  "id": "transfer-uuid",
  "from": "0xsender...address",
  "to": "0xrecipient...address",
  "tokenAddress": "0xtoken...address",
  "amount": "100",
  "status": "pending",
  "hash": "0xtx...hash",
  "createdAt": "2026-06-03T15:30:00Z"
}

3.2 Listar Transferências#

Lista transferências com filtros e paginação.
Endpoint: GET /v1/transfers
Query Parameters:
ParâmetroTipoDescrição
pageintegerNúmero da página
pageSizeintegerItens por página
walletIdstringFiltrar por wallet
statusstringFiltrar por status: pending, confirmed, failed
networkstringFiltrar por rede
fromstringFiltrar por remetente
tostringFiltrar por destinatário
tokenAddressstringFiltrar por token

3.3 Obter Transferência#

Retorna detalhes de uma transferência específica.
Endpoint: GET /v1/transfers/{id}
Path Parameters:
ParâmetroTipoDescrição
idstringID da transferência

⚙️ 4. Transactions#

4.1 Executar Transação (chamada de contrato)#

Executa uma chamada arbitrária de contrato a partir de uma smart account (gasless). Use para interagir com contratos além das operações nativas de token/transfer.
Endpoint: POST /v1/transactions/execute
Request:
{
  "from": "0xsender...address",
  "to": "0xcontract...address",
  "data": "0xa9059cbb000000000000000000000000...",
  "value": "0",
  "network": "xdc-testnet",
  "reason": "Aprovação de gasto em contrato de staking",
  "metadata": {
    "integration": "staking-v2"
  }
}
Parâmetros:
CampoTipoObrigatórioDescrição
fromstringSimSmart account de origem
tostringSimEndereço do contrato/destino
datastringSimCalldata codificada (hex 0x...)
valuestringNãoValor nativo a enviar (padrão "0")
networkstringNãoRede (compatível com o ambiente da chave)
reasonstringNãoMotivo (auditoria)
metadataobjectNãoDados adicionais
Response: 200 OK
{
  "transactionId": "tx-uuid",
  "hash": "0xtx...hash",
  "userOpHash": "0xuserop...hash",
  "status": "pending",
  "gasFee": "0.0012"
}

📊 5. Audit (Auditoria)#

5.1 Consultar Logs de Auditoria#

Consulta logs de todas as operações realizadas na plataforma.
Endpoint: GET /v1/audit
Query Parameters:
ParâmetroTipoDescriçãoExemplo
pageintegerNúmero da página1
pageSizeintegerItens por página50
routestringFiltrar por rota/v1/tokens
methodstringMétodo HTTPPOST
actionstringAção realizadamint, burn, block
resourceTypestringTipo de recursotokens, wallets
statusCodeintegerCódigo HTTP200, 400, 500
contractAddressstringEndereço do contrato0xtoken...
reasonstringFiltrar por motivoCourt order
startDatestringData inicial (ISO 8601)2026-06-01T00:00:00Z
endDatestringData final (ISO 8601)2026-06-30T23:59:59Z
Exemplo - Buscar todas operações de um token:
Response: 200 OK
{
  "data": [
    {
      "id": "audit-uuid",
      "timestamp": "2026-06-03T10:00:00Z",
      "route": "/v1/tokens/:address/mint",
      "method": "POST",
      "action": "mint",
      "resourceType": "tokens",
      "resourceId": "token-uuid",
      "statusCode": 200,
      "contractAddress": "0xtoken...abc",
      "reason": "Loyalty reward",
      "metadata": {
        "amount": "1000",
        "to": "0xuser..."
      }
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 50,
    "totalItems": 234,
    "totalPages": 5
  }
}

🔢 Formatos de Quantidade#

A API aceita valores em formato human-friendly para melhor experiência.

Como Enviar Valores#

Use o campo amountTokens com valores legíveis:
{ "amountTokens": "100" }     // 100 tokens
{ "amountTokens": "1.5" }     // 1.5 tokens
{ "amountTokens": "0.001" }   // 0.001 tokens
A API converte automaticamente para unidades raw com base nos decimais do token.
Exemplo:
Tokens TokenOne usam 6 decimais.
Você envia: "amountTokens": "100"
API converte para: 100000000 (raw = 100 × 10^6)
A blockchain recebe o valor correto automaticamente.
✅ Vantagem: Você não precisa calcular decimais manualmente.

📋 Códigos de Resposta HTTP#

CódigoDescrição
200Sucesso (GET, operações)
201Criado com sucesso (POST de criação)
400Requisição inválida
401Não autenticado (API key ausente/inválida)
403Não autorizado
404Recurso não encontrado
409Conflito (recurso já existe)
429Muitas requisições (rate limit)
500Erro interno do servidor

❌ Formato de Erro#

Todas as respostas de erro seguem este formato:
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "details": {
      "amountTokens": "must be greater than 0"
    }
  }
}
Códigos de Erro Comuns:
CódigoDescrição
VALIDATION_ERRORDados de entrada inválidos
NOT_FOUNDRecurso não encontrado
UNAUTHORIZEDAPI key ausente ou inválida
INSUFFICIENT_BALANCESaldo insuficiente
TOKEN_PAUSEDToken está pausado
USER_BLOCKEDUsuário bloqueado
INTERNAL_ERRORErro interno

🛡️ Boas Práticas#

Segurança#

1.
Nunca compartilhe sua API Key nem a exponha no front-end.
2.
Use HTTPS (obrigatório).
3.
Comece sempre em sandbox (tk_test_) antes de ir para produção (tk_live_).
4.
Valide as respostas antes de processar.

Auditoria#

1.
Sempre preencha reason em operações críticas (mint, burn, pause/unpause, block/unblock).
2.
Use metadata para rastreabilidade (ordens judiciais, IDs internos, compliance).

Performance#

1.
Use paginação em listas grandes.
2.
Implemente cache quando apropriado.
3.
Respeite o rate limit (ver abaixo) e implemente retry com backoff em 429.

🚀 Workflow Exemplo: Onboarding de Cliente#

Código Exemplo (sandbox):
Em produção, troque a base/rede por tk_live_… + polygon-mainnet (ou xdc-mainnet).

📞 Suporte#

Documentação: https://docs.tokenone.com.br
Dashboard: https://caas.tokenone.com.br
Email: suporte@tokenone.com.br

📄 Termos de Uso#

Ao usar a TokenOne API, você concorda com nossos Termos de Serviço e Política de Privacidade.
Limite de Rate (padrão): 100 requisições por minuto, por tenant. Requisições acima do limite recebem 429 Too Many Requests.

Versão da API: v1
Última Atualização: 3 de junho de 2026

© 2026 TokenOne. Todos os direitos reservados.
Built with