curl --request POST \
--url https://qa.esectra.com/v1/transactions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "<string>",
"asset": {
"decimals": 1,
"symbol": "<string>",
"contract_address": "<string>"
},
"from_addresses": [
"<string>"
],
"network": "BITCOIN",
"occurred_at": "<string>",
"source": {
"system": "<string>",
"reference": "<string>"
},
"subject_id": "<string>",
"to_addresses": [
"<string>"
],
"customer_wallet": "<string>",
"destination_wallet": "<string>",
"fiat_value": {
"amount": "<string>",
"currency": "<string>",
"decimals": 1
},
"metadata": {},
"originating_wallet": "<string>",
"transaction_hash": "<string>"
}
'import requests
url = "https://qa.esectra.com/v1/transactions"
payload = {
"amount": "<string>",
"asset": {
"decimals": 1,
"symbol": "<string>",
"contract_address": "<string>"
},
"from_addresses": ["<string>"],
"network": "BITCOIN",
"occurred_at": "<string>",
"source": {
"system": "<string>",
"reference": "<string>"
},
"subject_id": "<string>",
"to_addresses": ["<string>"],
"customer_wallet": "<string>",
"destination_wallet": "<string>",
"fiat_value": {
"amount": "<string>",
"currency": "<string>",
"decimals": 1
},
"metadata": {},
"originating_wallet": "<string>",
"transaction_hash": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: '<string>',
asset: {decimals: 1, symbol: '<string>', contract_address: '<string>'},
from_addresses: ['<string>'],
network: 'BITCOIN',
occurred_at: '<string>',
source: {system: '<string>', reference: '<string>'},
subject_id: '<string>',
to_addresses: ['<string>'],
customer_wallet: '<string>',
destination_wallet: '<string>',
fiat_value: {amount: '<string>', currency: '<string>', decimals: 1},
metadata: {},
originating_wallet: '<string>',
transaction_hash: '<string>'
})
};
fetch('https://qa.esectra.com/v1/transactions', 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://qa.esectra.com/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '<string>',
'asset' => [
'decimals' => 1,
'symbol' => '<string>',
'contract_address' => '<string>'
],
'from_addresses' => [
'<string>'
],
'network' => 'BITCOIN',
'occurred_at' => '<string>',
'source' => [
'system' => '<string>',
'reference' => '<string>'
],
'subject_id' => '<string>',
'to_addresses' => [
'<string>'
],
'customer_wallet' => '<string>',
'destination_wallet' => '<string>',
'fiat_value' => [
'amount' => '<string>',
'currency' => '<string>',
'decimals' => 1
],
'metadata' => [
],
'originating_wallet' => '<string>',
'transaction_hash' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://qa.esectra.com/v1/transactions"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qa.esectra.com/v1/transactions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://qa.esectra.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"decision": "ALLOW",
"decision_id": "<string>",
"evidence": [
{
"id": "<string>",
"kind": "IMAGE",
"location": "<string>",
"retention_policy": "<string>"
}
],
"reasons": [
{
"code": "<string>",
"message": "<string>"
}
],
"received_at": "<string>",
"review_status": "PENDING",
"risk_level": "LOW",
"transaction_id": "<string>",
"case_id": "<string>"
}{
"decision": "ALLOW",
"decision_id": "<string>",
"evidence": [
{
"id": "<string>",
"kind": "IMAGE",
"location": "<string>",
"retention_policy": "<string>"
}
],
"reasons": [
{
"code": "<string>",
"message": "<string>"
}
],
"received_at": "<string>",
"review_status": "PENDING",
"risk_level": "LOW",
"transaction_id": "<string>",
"case_id": "<string>"
}Handles `POST /v1/transactions`.
Errors
Returns 401 without usable credentials, 400 without an idempotency
key, 422 when the event fails the canonical contract, and 500 when a
store fails. A repeated tenant and idempotency key returns 200 with the
original record instead of creating a second transaction.
curl --request POST \
--url https://qa.esectra.com/v1/transactions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "<string>",
"asset": {
"decimals": 1,
"symbol": "<string>",
"contract_address": "<string>"
},
"from_addresses": [
"<string>"
],
"network": "BITCOIN",
"occurred_at": "<string>",
"source": {
"system": "<string>",
"reference": "<string>"
},
"subject_id": "<string>",
"to_addresses": [
"<string>"
],
"customer_wallet": "<string>",
"destination_wallet": "<string>",
"fiat_value": {
"amount": "<string>",
"currency": "<string>",
"decimals": 1
},
"metadata": {},
"originating_wallet": "<string>",
"transaction_hash": "<string>"
}
'import requests
url = "https://qa.esectra.com/v1/transactions"
payload = {
"amount": "<string>",
"asset": {
"decimals": 1,
"symbol": "<string>",
"contract_address": "<string>"
},
"from_addresses": ["<string>"],
"network": "BITCOIN",
"occurred_at": "<string>",
"source": {
"system": "<string>",
"reference": "<string>"
},
"subject_id": "<string>",
"to_addresses": ["<string>"],
"customer_wallet": "<string>",
"destination_wallet": "<string>",
"fiat_value": {
"amount": "<string>",
"currency": "<string>",
"decimals": 1
},
"metadata": {},
"originating_wallet": "<string>",
"transaction_hash": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: '<string>',
asset: {decimals: 1, symbol: '<string>', contract_address: '<string>'},
from_addresses: ['<string>'],
network: 'BITCOIN',
occurred_at: '<string>',
source: {system: '<string>', reference: '<string>'},
subject_id: '<string>',
to_addresses: ['<string>'],
customer_wallet: '<string>',
destination_wallet: '<string>',
fiat_value: {amount: '<string>', currency: '<string>', decimals: 1},
metadata: {},
originating_wallet: '<string>',
transaction_hash: '<string>'
})
};
fetch('https://qa.esectra.com/v1/transactions', 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://qa.esectra.com/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '<string>',
'asset' => [
'decimals' => 1,
'symbol' => '<string>',
'contract_address' => '<string>'
],
'from_addresses' => [
'<string>'
],
'network' => 'BITCOIN',
'occurred_at' => '<string>',
'source' => [
'system' => '<string>',
'reference' => '<string>'
],
'subject_id' => '<string>',
'to_addresses' => [
'<string>'
],
'customer_wallet' => '<string>',
'destination_wallet' => '<string>',
'fiat_value' => [
'amount' => '<string>',
'currency' => '<string>',
'decimals' => 1
],
'metadata' => [
],
'originating_wallet' => '<string>',
'transaction_hash' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://qa.esectra.com/v1/transactions"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qa.esectra.com/v1/transactions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://qa.esectra.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"<string>\",\n \"asset\": {\n \"decimals\": 1,\n \"symbol\": \"<string>\",\n \"contract_address\": \"<string>\"\n },\n \"from_addresses\": [\n \"<string>\"\n ],\n \"network\": \"BITCOIN\",\n \"occurred_at\": \"<string>\",\n \"source\": {\n \"system\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"subject_id\": \"<string>\",\n \"to_addresses\": [\n \"<string>\"\n ],\n \"customer_wallet\": \"<string>\",\n \"destination_wallet\": \"<string>\",\n \"fiat_value\": {\n \"amount\": \"<string>\",\n \"currency\": \"<string>\",\n \"decimals\": 1\n },\n \"metadata\": {},\n \"originating_wallet\": \"<string>\",\n \"transaction_hash\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"decision": "ALLOW",
"decision_id": "<string>",
"evidence": [
{
"id": "<string>",
"kind": "IMAGE",
"location": "<string>",
"retention_policy": "<string>"
}
],
"reasons": [
{
"code": "<string>",
"message": "<string>"
}
],
"received_at": "<string>",
"review_status": "PENDING",
"risk_level": "LOW",
"transaction_id": "<string>",
"case_id": "<string>"
}{
"decision": "ALLOW",
"decision_id": "<string>",
"evidence": [
{
"id": "<string>",
"kind": "IMAGE",
"location": "<string>",
"retention_policy": "<string>"
}
],
"reasons": [
{
"code": "<string>",
"message": "<string>"
}
],
"received_at": "<string>",
"review_status": "PENDING",
"risk_level": "LOW",
"transaction_id": "<string>",
"case_id": "<string>"
}Authorizations
A tenant API key. Acts for exactly one tenant and cannot conclude a case, because a conclusion records a person.
Body
Transaction ingestion request body.
Decimal amount at the asset's scale.
Asset transferred.
Show child attributes
Show child attributes
Direction relative to the customer.
DEPOSIT, WITHDRAWAL Sending addresses.
Network the transfer settled on.
BITCOIN RFC 3339 time the transfer occurred.
Submitting system and reference.
Show child attributes
Show child attributes
Tenant's customer the transaction belongs to.
Receiving addresses.
The customer's own wallet.
Wallet the value went to.
Fiat-equivalent value.
Show child attributes
Show child attributes
Integration metadata, kept out of decision logic.
Show child attributes
Show child attributes
Wallet the value came from.
On-chain transaction hash.
Response
A replayed Idempotency-Key; the original record
Transaction record response body.
Decision outcome. Sentinel recommends; it never enforces.
ALLOW, WARN, BLOCK, HOLD, REVIEW_REQUIRED, FLAG, BLOCK_RECOMMENDED, SUSPEND, END_STREAM Decision record identifier.
References to retained evidence.
Show child attributes
Show child attributes
Explanation reasons.
Show child attributes
Show child attributes
RFC 3339 time the event was accepted.
Review lifecycle state.
PENDING, APPROVED, OVERTURNED, NOT_REQUIRED Explainable risk level.
LOW, MEDIUM, HIGH, CRITICAL Gorgon's transaction identifier.
Review case opened for the decision, when one was needed.

