Skip to content
CCPEDIAby Unity Nodes
Documentation/Canton Network Docs/Splice APIs › Scan APIs › Scan APIView on Canton Network Docs ↗

POST /v1/holdings/state

POST/v1/holdings/state

Removed in 0.9.0. Historical definition from 0.8.4.

Deprecated. Please use /v2/holdings/state instead. The only difference with this endpoint and that one is the type of the after/next_page_token pagination token. Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged.

Protocol Details

Operation IDgetHoldingsStateAtV1
Published0.8.4

Inputs

Body

application/json
migration_idinteger (int64)required
The migration id for which to return the ACS.
record_timestring (date-time)required
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.
record_time_matchstring
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.
afterinteger (int64)
Pagination token for the next page of results.
page_sizeinteger (int32)required
The maximum number of created events returned for this request.
owner_party_idsstring[]required
Filters by contracts in which these party_ids are the owners of the amulets.

Outputs

200

application/json
record_timestring (date-time)required
The same record_time as in the request.
migration_idinteger (int64)required
The same migration_id as in the request.
created_eventsActiveContract[]required
Up to page_size contracts in the ACS. create_arguments are always encoded as compact_json.
next_page_tokeninteger (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

application/json
errorstringrequired

404

application/json
errorstringrequired

500

application/json
errorstringrequired

History

Removed in0.9.0

Last available in 0.8.4. Retained for historical reference.

Deprecated0.7.5
Updated0.7.5

The POST /v1/holdings/state operation changed in this snapshot.

Added0.6.0
cURL
cURL
curl --request POST \
  --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/state' \
  --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,
  "owner_party_ids": [
    "<string>"
  ]
}'
Python
Python
import json
import requests

url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/state"
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,
  "owner_party_ids": [
    "<string>"
  ]
}''')
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/v1/holdings/state', {
  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,
  "owner_party_ids": [
    "<string>"
  ]
}),
});

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/v1/holdings/state',
    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,
  "owner_party_ids": [
    "<string>"
  ]
}
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/v1/holdings/state", bytes.NewBufferString(`{
  "migration_id": 123,
  "record_time": "2026-01-01T00:00:00Z",
  "record_time_match": "exact",
  "after": 123,
  "page_size": 123,
  "owner_party_ids": [
    "<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))
}
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/v1/holdings/state"))
    .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,
  "owner_party_ids": [
    "<string>"
  ]
}
"""))
    .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/v1/holdings/state')
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,
  "owner_party_ids": [
    "<string>"
  ]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end
puts response.body
200application/json
200
{
  "record_time": "2026-01-01T00:00:00Z",
  "migration_id": 123,
  "created_events": [
    {
      "created_in_update_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
}
400application/json
400
{
  "error": "<string>"
}
404application/json
404
{
  "error": "<string>"
}
500application/json
500
{
  "error": "<string>"
}