curl --request GET \
--url https://api.scrip.dev/v1/journal-entries/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/journal-entries/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.scrip.dev/v1/journal-entries/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scrip.dev/v1/journal-entries/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scrip.dev/v1/journal-entries/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scrip.dev/v1/journal-entries/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/journal-entries/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"action_type": "HOLD",
"created_at": "2024-01-15T10:30:00Z",
"description": "Purchase reward: 10 POINTS",
"entry_hash": "b3a1d9f8c2e4a7b6d1e3f5a8c9b2d4e6f7a1b3c5d7e9f2a4b6c8d0e1f3a5b7c9",
"event_id": "550e8400-e29b-41d4-a716-446655440002",
"id": "550e8400-e29b-41d4-a716-446655440000",
"postings": [
{
"amount": "100.00",
"asset_symbol": "POINTS",
"bucket": "AVAILABLE",
"created_at": "2024-01-15T10:30:00Z",
"entity_type": "PARTICIPANT",
"group_id": "550e8400-e29b-41d4-a716-446655440011",
"id": "550e8400-e29b-41d4-a716-446655440003",
"participant_id": "550e8400-e29b-41d4-a716-446655440010",
"program_id": "550e8400-e29b-41d4-a716-446655440012"
}
],
"program_id": "550e8400-e29b-41d4-a716-446655440001",
"program_name": "Q1 Sales Bonus",
"reference_id": "auth_12345",
"rule_id": "950e8400-e29b-41d4-a716-446655440004"
}{
"code": "bad_request",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Invalid request parameters"
}{
"code": "unauthorized",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Missing or invalid credentials"
}{
"code": "not_found",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Resource not found"
}{
"code": "internal_error",
"message": "An internal error occurred"
}Get a journal entry
Retrieve a journal entry by ID, including its double-entry postings.
curl --request GET \
--url https://api.scrip.dev/v1/journal-entries/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/journal-entries/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.scrip.dev/v1/journal-entries/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scrip.dev/v1/journal-entries/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scrip.dev/v1/journal-entries/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scrip.dev/v1/journal-entries/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/journal-entries/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"action_type": "HOLD",
"created_at": "2024-01-15T10:30:00Z",
"description": "Purchase reward: 10 POINTS",
"entry_hash": "b3a1d9f8c2e4a7b6d1e3f5a8c9b2d4e6f7a1b3c5d7e9f2a4b6c8d0e1f3a5b7c9",
"event_id": "550e8400-e29b-41d4-a716-446655440002",
"id": "550e8400-e29b-41d4-a716-446655440000",
"postings": [
{
"amount": "100.00",
"asset_symbol": "POINTS",
"bucket": "AVAILABLE",
"created_at": "2024-01-15T10:30:00Z",
"entity_type": "PARTICIPANT",
"group_id": "550e8400-e29b-41d4-a716-446655440011",
"id": "550e8400-e29b-41d4-a716-446655440003",
"participant_id": "550e8400-e29b-41d4-a716-446655440010",
"program_id": "550e8400-e29b-41d4-a716-446655440012"
}
],
"program_id": "550e8400-e29b-41d4-a716-446655440001",
"program_name": "Q1 Sales Bonus",
"reference_id": "auth_12345",
"rule_id": "950e8400-e29b-41d4-a716-446655440004"
}{
"code": "bad_request",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Invalid request parameters"
}{
"code": "unauthorized",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Missing or invalid credentials"
}{
"code": "not_found",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Resource not found"
}{
"code": "internal_error",
"message": "An internal error occurred"
}entry_hash field, a SHA-256 seal that chains it to the previous entry in the organization’s ledger. This hash covers the entry’s metadata and all postings, making the ledger tamper-evident.
Use this endpoint to inspect the full breakdown of a specific transaction. event_id links back to the event that triggered the entry. reference_id, when present, is shared by the related entries of one hold, settlement, or pending redemption, so you can find them together. action_type names the operation that created the entry; see Action types.
Authorizations
API key passed in the X-API-Key header.
Path Parameters
Journal entry ID
Response
Journal entry with postings
A journal entry with its metadata and double-entry postings
Ledger action type (e.g. CREDIT, DEBIT, HOLD, RELEASE, FORFEIT)
"HOLD"
When this entry was created (RFC 3339)
"2024-01-15T10:30:00Z"
Human-readable explanation of the entry's purpose
"Purchase reward: 10 POINTS"
SHA-256 hash sealing this entry into the organization's hash chain
"b3a1d9f8c2e4a7b6d1e3f5a8c9b2d4e6f7a1b3c5d7e9f2a4b6c8d0e1f3a5b7c9"
Event that triggered this entry (null if created via direct API call)
"550e8400-e29b-41d4-a716-446655440002"
Unique identifier for this journal entry
"550e8400-e29b-41d4-a716-446655440000"
Double-entry postings (always sum to zero). Omitted in list responses.
Show child attributes
Show child attributes
Program this entry belongs to
"550e8400-e29b-41d4-a716-446655440001"
Display name of the program
"Q1 Sales Bonus"
Correlation ID linking holds to releases
"auth_12345"
Rule that triggered this entry (null for direct API calls or worker-generated entries)
"950e8400-e29b-41d4-a716-446655440004"