curl --request POST \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs' \
--header 'Content-Type: application/json' \
--data '{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs"
headers = {'Content-Type': 'application/json'}
payload = json.loads(r'''{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
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/state/acs", bytes.NewBufferString(`{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}`))
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))
}
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/state/acs"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"record_time": "2026-01-01T00:00:00Z",
"migration_id": 123,
"created_events": [
{
"event_type": "<string>",
"event_id": "<string>",
"contract_id": "<string>",
"template_id": "<string>",
"package_name": "<string>",
"create_arguments": {},
"created_at": "2026-01-01T00:00:00Z",
"signatories": [
"<string>"
],
"observers": [
"<string>"
]
}
],
"next_page_token": 123
}
{
"error": "<string>"
}
{
"error": "<string>"
}
{
"error": "<string>"
}
POST /v0/state/acs
Deprecated. Please use /v1/state/acs instead. Returns the ACS in creation date ascending order, paged, for a given migration id and record time.
POST
/
api
/
scan
/
v0
/
state
/
acs
curl --request POST \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs' \
--header 'Content-Type: application/json' \
--data '{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs"
headers = {'Content-Type': 'application/json'}
payload = json.loads(r'''{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
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/state/acs", bytes.NewBufferString(`{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}`))
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))
}
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/state/acs"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"record_time": "2026-01-01T00:00:00Z",
"migration_id": 123,
"created_events": [
{
"event_type": "<string>",
"event_id": "<string>",
"contract_id": "<string>",
"template_id": "<string>",
"package_name": "<string>",
"create_arguments": {},
"created_at": "2026-01-01T00:00:00Z",
"signatories": [
"<string>"
],
"observers": [
"<string>"
]
}
],
"next_page_token": 123
}
{
"error": "<string>"
}
{
"error": "<string>"
}
{
"error": "<string>"
}
Deprecated. Please use /v1/state/acs instead. Returns the ACS in creation date ascending order, paged, for a given migration id and record time.
curl --request POST \
--url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs' \
--header 'Content-Type: application/json' \
--data '{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}'
import json
import requests
url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs"
headers = {'Content-Type': 'application/json'}
payload = json.loads(r'''{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}''')
response = requests.request(
"POST", url, headers=headers, json=payload
)
print(response.text)
const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}),
});
console.log(await response.text());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => <<<'JSON'
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
echo $response;
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/state/acs", bytes.NewBufferString(`{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}`))
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))
}
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/state/acs"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
"""))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'
uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
"migration_id": 123,
"record_time": "2026-01-01T00:00:00Z",
"record_time_match": "exact",
"after": 123,
"page_size": 123,
"party_ids": [
"<string>"
],
"templates": [
"<string>"
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
puts response.body
{
"record_time": "2026-01-01T00:00:00Z",
"migration_id": 123,
"created_events": [
{
"event_type": "<string>",
"event_id": "<string>",
"contract_id": "<string>",
"template_id": "<string>",
"package_name": "<string>",
"create_arguments": {},
"created_at": "2026-01-01T00:00:00Z",
"signatories": [
"<string>"
],
"observers": [
"<string>"
]
}
],
"next_page_token": 123
}
{
"error": "<string>"
}
{
"error": "<string>"
}
{
"error": "<string>"
}
Body
application/json
number
required
OpenAPI type:
integer (int64).The migration id for which to return the ACS.string
required
OpenAPI type:
string (date-time).The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by /v0/state/acs/snapshot-timestamp if record_time_match is set to exact (which is the default). If record_time_match is set to at_or_before, this can be any timestamp, and the most recent snapshot at or before the given record_time will be returned.string
default:"exact"
How to match the record_time. “exact” requires the record_time to match exactly. “at_or_before” finds the most recent snapshot at or before the given record_time.Allowed values:
exact, at_or_before.number
OpenAPI type:
integer (int64).Pagination token for the next page of results. For this to be valid, this must be the next_page_token from a prior request with identical parameters aside from after and page_size; the response may be invalid otherwise.number
required
OpenAPI type:
integer (int32).The maximum number of created events returned for this request.string[]
Filters the ACS by contracts in which these party IDs are stakeholders.
string[]
Filters the ACS by contracts with these template IDs, specified as “PACKAGE_NAME:MODULE_NAME:ENTITY_NAME”.
Responses
200
okapplication/json
string (date-time)
required
The same
record_time as in the request.integer (int64)
required
The same
migration_id as in the request.CreatedEvent[]
required
Up to
page_size contracts in the ACS. create_arguments are always encoded as compact_json.Show child attributes
Show child attributes
string
required
string
required
The ID of this particular event. Equal to the key of this element of the containing
events_by_id if this is part of a TreeEvent.string
required
The ID of the created contract.
string
required
The template of the created contract.
string
required
The package name of the created contract.
object
required
The arguments that have been used to create the contract, in the form of JSON representation of a Daml record.
string (date-time)
required
Ledger effective time of the transaction that created the contract.
string[]
required
Signatories to the contract, in the form of party IDs.
string[]
required
Observers to the contract, in the form of party IDs.
integer (int64)
When requesting the next page of results, pass this as
after to the AcsRequest or HoldingsStateRequest. Will be absent when there are no more pages.400
bad requestapplication/json
string
required
404
not foundapplication/json
string
required
500
internal server errorapplication/json
string
required
History
Deprecated
0.6.0Updated
0.6.0The POST /v0/state/acs operation changed in this snapshot.