Transactions Reference
Register Wallet
Registers a wallet on a blockchain so it can sign and submit transactions. Do this once per wallet per blockchain before submitting any transactions.
Request
POST /api/v1/transactions/register-wallet
Headers
X-AccessKey— Your entity access keyContent-Type: application/json
Body
walletAddress(required) — The wallet address to registerblockchain(required) — The blockchain ID to register onpassphrase(optional) — Only needed if the wallet was created with a passphrase
Response
Returns the transaction result from the node on success.
- cURL
- TypeScript
curl -X POST \
'https://your-tms-url/api/v1/transactions/register-wallet' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Content-Type: application/json' \
-d '{
"walletAddress": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"blockchain": "08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2"
}'
const res = await fetch('https://your-tms-url/api/v1/transactions/register-wallet', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
walletAddress: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
blockchain: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
}),
});
const data = await res.json();
console.log(data);
Create Transaction
Submits a transaction to a blockchain. The wallet must already be registered on the target blockchain before calling this. The TMS picks an available node from your access key's allowed nodes and forwards the transaction.
Request
POST /api/v1/transactions
Headers
X-AccessKey— Your entity access keyContent-Type: application/json
Body
blockchainId(required) — Target blockchain IDto(required) — Recipient wallet addresswalletAddress— Signing wallet addressfrom— Sender wallet addresspayload— The data to storepayloadType—textorjsonpassphrase— Only if the wallet was created with onemetadata— Optional key-value pairs
Response
Returns the transaction object including transactionId on success.
Example response
{
"transactionId": "a1b2c3d4e5f6...",
"blockchainId": "08c28f29...",
"status": "pending",
"payload": "hello blockchain",
"payloadType": "text",
"from": "54677be3...",
"to": "54677be3..."
}
- cURL
- TypeScript
curl -X POST \
'https://your-tms-url/api/v1/transactions' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Content-Type: application/json' \
-d '{
"blockchainId": "08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2",
"from": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"to": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"walletAddress": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"payload": "hello blockchain",
"payloadType": "text"
}'
const res = await fetch('https://your-tms-url/api/v1/transactions', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
blockchainId: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
from: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
to: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
walletAddress: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
payload: 'hello blockchain',
payloadType: 'text',
}),
});
const tx = await res.json();
console.log('Transaction ID:', tx.transactionId);
Get Transaction
Retrieves the payload and metadata of a specific transaction by its ID and blockchain. Useful for verifying a transaction landed correctly.
Request
GET /api/v1/transactions/{blockchainId}/{transactionId}
Headers
X-AccessKey— Your entity access key
Path parameters
blockchainId— The blockchain the transaction was submitted totransactionId— The ID returned when the transaction was created
Response
Returns the full transaction object including payload, status, block height, and timestamps.
Example response
{
"transactionId": "a1b2c3d4e5f6...",
"blockchainId": "08c28f29...",
"payload": "hello blockchain",
"payloadType": "text",
"status": "confirmed",
"blockHeight": 2301,
"from": "54677be3...",
"to": "54677be3...",
"timestamp": {
"exactTime": "2026-05-25T19:00:00Z"
}
}
- cURL
- TypeScript
curl -X GET \
'https://your-tms-url/api/v1/transactions/{blockchainId}/{transactionId}' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Accept: application/json'
const blockchainId = '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2';
const transactionId = 'your-transaction-id';
const res = await fetch(
`https://your-tms-url/api/v1/transactions/${blockchainId}/${transactionId}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);
const tx = await res.json();
console.log('Status:', tx.status);
console.log('Block height:', tx.blockHeight);
console.log('Payload:', tx.payload);
Create JSON Transaction
Submits a transaction whose payload is a structured JSON object. The TMS serializes the object to the blockchain. Use this when you want to store machine-readable records rather than plain text.
Request
POST /api/v1/transactions/json
Headers
X-AccessKey— Your entity access keyContent-Type: application/json
Body
blockchainId(required) — Target blockchain IDto(required) — Recipient wallet addresspayload(required) — A JSON object to store on-chainwalletAddress(optional) — Signing wallet (defaults tofrom)from(optional) — Sender wallet addresspassphrase(optional) — Only if the wallet was created with onemetadata(optional) — Key-value string pairs
Response
{
"transactionId": "a1b2c3d4e5f6...",
"blockchainId": "08c28f29...",
"status": "pending",
"payloadType": "json"
}
- cURL
- TypeScript
curl -X POST \
'https://your-tms-url/api/v1/transactions/json' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Content-Type: application/json' \
-d '{
"blockchainId": "08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2",
"to": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"walletAddress": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"payload": { "event": "invoice_paid", "amount": 1500, "currency": "USD" }
}'
const res = await fetch('https://your-tms-url/api/v1/transactions/json', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
blockchainId: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
to: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
walletAddress: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
payload: { event: 'invoice_paid', amount: 1500, currency: 'USD' },
}),
});
const tx = await res.json();
console.log('Transaction ID:', tx.transactionId);
Create Text Transaction
Submits a transaction whose payload is a plain text string. Identical toPOST /api/v1/transactions but explicitly typed — use this when you want to be clear in your code that the payload is text.
Request
POST /api/v1/transactions/text
Headers
X-AccessKey— Your entity access keyContent-Type: application/json
Body
blockchainId(required) — Target blockchain IDto(required) — Recipient wallet addresswalletAddress(required) — Signing wallet addressfrom— Sender wallet addresspayload— The text string to storepayloadType— Should be"text"passphrase(optional) — Only if the wallet was created with onemetadata(optional) — Key-value string pairs
Response
{
"transactionId": "a1b2c3d4e5f6...",
"blockchainId": "08c28f29...",
"status": "pending",
"payload": "hello blockchain",
"payloadType": "text"
}
- cURL
- TypeScript
curl -X POST \
'https://your-tms-url/api/v1/transactions/text' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Content-Type: application/json' \
-d '{
"blockchainId": "08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2",
"from": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"to": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"walletAddress": "54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585",
"payload": "hello blockchain",
"payloadType": "text"
}'
const res = await fetch('https://your-tms-url/api/v1/transactions/text', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
blockchainId: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
from: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
to: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
walletAddress: '54677be320b0bd704a99ee1f3d60c7309dfdee4810b1846d7b66ddbe0e84f585',
payload: 'hello blockchain',
payloadType: 'text',
}),
});
const tx = await res.json();
console.log('Transaction ID:', tx.transactionId);
Get Transaction History
Returns a paginated list of transactions submitted through the TMS by your entity. Supports filtering by status, flow type, blockchain, sender, and recipient.
Request
GET /api/v1/transactions/history
Headers
X-AccessKey— Your entity access key
Query parameters
status(optional) — Filter by status, e.g.pending,confirmedflow_type(optional) — Filter by flow typeblockchain_id(optional) — Filter to a specific blockchainfrom(optional) — Filter by sender wallet addressto(optional) — Filter by recipient wallet addresspage(optional) — Page number (default: 0)pageSize(optional) — Results per page (default: 20)
Response
{
"items": [
{
"id": 1,
"transactionId": "a1b2c3...",
"blockchainId": "08c28f29...",
"status": "confirmed",
"payloadType": "text",
"from": "54677be3...",
"to": "54677be3...",
"createdAt": "2026-05-25T19:00:00Z"
}
],
"total": 1,
"page": 0,
"pageSize": 20
}
- cURL
- TypeScript
curl -X GET \
'https://your-tms-url/api/v1/transactions/history?status=confirmed&pageSize=10' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Accept: application/json'
const params = new URLSearchParams({
status: 'confirmed',
blockchain_id: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
page: '0',
pageSize: '20',
});
const res = await fetch(
`https://your-tms-url/api/v1/transactions/history?${params}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);
const history = await res.json();
console.log('Total:', history.total);
history.items.forEach(tx => console.log(tx.transactionId, tx.status));
Get History Entry by ID
Retrieves a single transaction history record by its internal TMS ID (the id field returned in the history list). This is separate from the on-chain transactionId.
Request
GET /api/v1/transactions/history/{id}
Headers
X-AccessKey— Your entity access key
Path parameters
id— The internal TMS history record ID
Response
{
"id": 42,
"transactionId": "a1b2c3...",
"blockchainId": "08c28f29...",
"status": "confirmed",
"payloadType": "text",
"from": "54677be3...",
"to": "54677be3...",
"createdAt": "2026-05-25T19:00:00Z"
}
- cURL
- TypeScript
curl -X GET \
'https://your-tms-url/api/v1/transactions/history/42' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Accept: application/json'
const id = 42;
const res = await fetch(
`https://your-tms-url/api/v1/transactions/history/${id}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);
const entry = await res.json();
console.log('Transaction ID:', entry.transactionId);
console.log('Status:', entry.status);
Get Queued Transaction Status
Checks the status of a transaction currently in the submission queue for a given blockchain. Use this to poll for confirmation when the TMS returns a message ID instead of a finalized transaction ID.
Request
GET /api/v1/transactions/{blockchainId}/queue/{msgId}
Headers
X-AccessKey— Your entity access key
Path parameters
blockchainId— The blockchain the transaction was submitted tomsgId— The queue message ID returned during submission
Response
{
"msgId": "msg-abc123",
"status": "pending",
"transactionId": "a1b2c3...",
"blockchainId": "08c28f29..."
}
- cURL
- TypeScript
curl -X GET \
'https://your-tms-url/api/v1/transactions/08c28f29.../queue/msg-abc123' \
-H 'X-AccessKey: your-entity-access-key' \
-H 'Accept: application/json'
const blockchainId = '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2';
const msgId = 'msg-abc123';
const res = await fetch(
`https://your-tms-url/api/v1/transactions/${blockchainId}/queue/${msgId}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);
const queueEntry = await res.json();
console.log('Status:', queueEntry.status);
console.log('Transaction ID:', queueEntry.transactionId);