POST /v0/transactions
POST
/v0/transactionsRemoved in 0.7.0. Historical definition from 0.6.14.
Deprecated with known bugs that will not be fixed, use /v2/updates instead. Lists transactions, by default in ascending order, paged, from ledger begin or optionally starting after a provided event id.Protocol Details
Inputs
Body
application/json
page_end_event_idstringNote that all transactions carry some monotonically-increasing event_id. Omit this page_end_event_id to start reading the first page, from the beginning or the end of the ledger, depending on the sort_order column. A subsequent request can fill the page_end_event_id with the last event_id of the TransactionHistoryResponse to continue reading in the same sort_order. The transaction with event_id == page_end_event_id will be skipped in the next response, making it possible to continuously read pages in the same sort_order.
sort_orderstringSort order for the transactions. For ascending order, from beginning to the end of the ledger, use “asc”. For descending order, from end to beginning of the ledger, use “desc”. “asc” is used if the sort_order is omitted.
page_sizeinteger (int64)requiredThe maximum number of transactions returned for this request.
Outputs
History
Removed in
0.7.0Last available in 0.6.14. Retained for historical reference.
Updated
0.5.12The POST /v0/transactions operation changed in this snapshot.
Deprecated
0.5.10cURL
cURL
curl --request POST \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions' \
--header 'Content-Type: application/json' \
--data '{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}'
Python
Python
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions"
headers = {'Content-Type': 'application/json'}
payload = json.loads(r'''{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
JavaScript
JavaScript
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}),
});
console.log(await response.text());
PHP
PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}
JSON,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
Go
Go
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions", bytes.NewBufferString(`{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}`))
req.Header.Set("Content-Type", "application/json")
response, _ := http.DefaultClient.Do(req)
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
Java
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
var request = HttpRequest.newBuilder()
.uri(URI.create("https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Ruby
Ruby
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transactions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"page_end_event_id": "<string>",
"sort_order": "asc",
"page_size": 123
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
200application/json
200
{
"transactions": [
{
"transaction_type": "transfer",
"event_id": "<string>",
"offset": "<string>",
"date": "2026-01-01T00:00:00Z",
"domain_id": "<string>",
"round": 123,
"transfer": {
"sender": {
"party": "<string>",
"input_amulet_amount": "<string>",
"input_app_reward_amount": "<string>",
"input_validator_reward_amount": "<string>",
"input_sv_reward_amount": "<string>",
"input_validator_faucet_amount": "<string>",
"sender_change_fee": "<string>",
"sender_change_amount": "<string>",
"sender_fee": "<string>",
"holding_fees": "<string>"
},
"receivers": [
{
"party": "<string>",
"amount": "<string>",
"receiver_fee": "<string>"
}
],
"balance_changes": [
{
"party": "<string>",
"change_to_initial_amount_as_of_round_zero": "<string>",
"change_to_holding_fees_rate": "<string>"
}
],
"description": "<string>",
"transferInstructionReceiver": "<string>",
"transferInstructionAmount": "<string>",
"transferInstructionCid": "<string>",
"transfer_kind": "create_transfer_instruction"
},
"mint": {
"amulet_owner": "<string>",
"amulet_amount": "<string>"
},
"tap": {
"amulet_owner": "<string>",
"amulet_amount": "<string>"
},
"abort_transfer_instruction": {
"abort_kind": "withdraw",
"transfer_instruction_cid": "<string>"
}
}
]
}
400application/json
400
{
"error": "<string>"
}
404application/json
404
{
"error": "<string>"
}
500application/json
500
{
"error": "<string>"
}