Conceitos rápidos
Uma transação é criada pela API e depois processada assíncronamente pelas etapas de preparação, assinatura, broadcast e confirmação.
Tipos de operação suportados
transferTransferência simples.contract_callChamada de contrato.typed_messageAssinatura de mensagem tipada EIP-712.
Observações específicas de Tron
- O fluxo Tron agora monta uma transação real antes da assinatura.
- Para transferência nativa de TRX, use
operationType = transfercomcalldata = 0x. - Para smart contract em Tron, a API hoje consegue montar chamadas quando o seletor do
calldatacorresponde a assinaturas ABI conhecidas, comotransfer(address,uint256),approve(address,uint256)etransferFrom(address,address,uint256). - Chamadas arbitrárias de contrato Tron com seletor desconhecido ainda não são auto-montadas pela API.
- Para TRC20, o fluxo recomendado é usar
operationType = contract_call, enviar o contrato nodestination.addresse o ABI-encoded nocalldata.
Criar uma nova transação de saída.
Endpoint: POST /transactions
Autenticação
Exige bearer token com permissão transaction:create.
Body base
{
"source": {
"vaultId": "12"
},
"destination": {
"address": "0xA35Db58D2055e2aC965dA6Ff905bf12B62792Fe1"
},
"network": "polygon",
"operationType": "transfer",
"amount": "1000000000000000",
"calldata": "0x"
}
Campos
source.vaultIdVault funcional de origem.destination.addressDestino da operação.networkNome da rede, comopolygon,ethereum,tron.operationTypetransfer,contract_calloutyped_message.amountOpcional para alguns fluxos, sempre como string inteira.tokenAddressOpcional. Pode ser inferido em algumas chamadas EVM.typedDataObrigatório quandooperationType = typed_message.calldataObrigatório e precisa ser hex com prefixo0x.masterKeyIdOpcional.
Validações importantes
typed_messagesó funciona em redes EVM.- Para EVM,
destination.addressdeve ser endereço hexadecimal válido. - Para EVM,
tokenAddresstambém deve ser endereço válido se enviado. calldatadeve ser hex.amountdeve ser string inteira positiva quando enviado.
Retorno
O retorno é a transação criada já enriquecida com metadados amigáveis.
Exemplo resumido:
{
"id": "uuid",
"vaultId": "12",
"feePayerType": "relayer",
"feePayerVaultId": "uuid-ou-null",
"network": "polygon",
"networkGroup": "evm",
"operationType": "transfer",
"tokenAddress": null,
"amount": "1000000000000000",
"destination": "0xa35d...",
"calldata": "0x",
"status": "Created",
"createdBy": "uuid-do-api-user",
"assetSymbol": "POL",
"assetDecimals": 18,
"intent": {
"classification": "native_transfer",
"methodSelector": null,
"methodName": null,
"tokenAddress": null,
"from": null,
"to": "0xa35d...",
"amount": "1000000000000000"
},
"createdAt": "2026-03-26T12:00:00.000Z",
"updatedAt": "2026-03-26T12:00:00.000Z"
}
Listar transações com páginação e filtros.
Endpoint: GET /transactions
Autenticação
Exige bearer token com permissão transaction:read.
Query params
pagePadrão:1.pageSizePadrão:10. Máximo:100.searchBusca porid, destino,vaultIdoutxHash.statusFiltra por status.networkFiltra por rede.
Retorno
{
"items": [
{
"id": "uuid",
"vaultId": "12",
"feePayerType": "vault",
"feePayerVaultId": null,
"network": "polygon",
"networkGroup": "evm",
"operationType": "transfer",
"tokenAddress": null,
"amount": "1000",
"destination": "0x...",
"calldata": "0x",
"rawTransactionHex": null,
"signature": null,
"txHash": null,
"status": "Created",
"failureReason": null,
"createdBy": "uuid",
"assetSymbol": "POL",
"assetDecimals": 18,
"intent": {
"classification": "native_transfer",
"methodSelector": null,
"methodName": null,
"tokenAddress": null,
"from": null,
"to": "0x...",
"amount": "1000"
},
"createdAt": "2026-03-26T12:00:00.000Z",
"updatedAt": "2026-03-26T12:00:00.000Z"
}
],
"total": 1,
"page": 1,
"pageSize": 10,
"totalPages": 1
}
Consultar uma transação específica com histórico de status.
Endpoint: GET /transactions/:transactionId
Autenticação
Exige bearer token com permissão transaction:read.
Parâmetros de rota
transactionIdUUID interno da transação.
Retorno
Mesmo formato do item de transação, com campos extras:
historyHistórico de status.simulationResultado da simulação, quando aplicável.
Exemplo resumido:
{
"id": "uuid",
"status": "Confirming",
"txHash": "0x...",
"assetSymbol": "USDT",
"assetDecimals": 6,
"intent": {
"classification": "erc20_transfer",
"methodSelector": "0xa9059cbb",
"methodName": "transfer(address,uint256)",
"tokenAddress": "0x...",
"from": null,
"to": "0x...",
"amount": "10000"
},
"simulation": {
"attempted": true,
"success": true,
"result": "0x"
},
"history": [
{
"id": "uuid",
"transactionId": "uuid",
"status": "Created",
"message": "transaction accepted",
"metadataJson": null,
"createdAt": "2026-03-26T12:00:00.000Z"
}
]
}
Status comuns de transação
CreatedAwaitingSignatureBroadcastingConfirmingSuccessFailed