The Trinity Beast – Quick Reference

Common tasks, code examples, and troubleshooting at a glance

LPO: https://api.cpmp-site.org LRS: https://lrs.cpmp-site.org UDP: udp.cpmp-site.org Updated: April 2026

1. API Cheat Sheet

ActionEndpointKey Params
Get price (single)GET /priceasset=btc
Get prices (batch) NEWPOST /pricesJSON body: {"assets": ["BTC","ETH"]}
Usage logs (JSON)GET /reports/usageapi_key_id, asset, start_date
Usage logs (CSV)GET /reports/usageformat=csv
Usage logs (TSV)GET /reports/usageformat=tsv
Usage logs (text)GET /reports/usageformat=text
Summary reportGET /reports/summarystart_date, end_date, format
Health checkGET /health
✅ Batch Efficiency: POST /prices fetches up to 30 assets in a single request — and counts as 1 request against your rate limits. Perfect for portfolio dashboards and watchlists.
🎯 Better than Kraken: Most exchange batch endpoints fail the entire request if one asset is delisted or mistyped. Trinity Beast returns HTTP 200 with every asset that resolved in prices and every one that didn't in failed[]. Partial failures don't break your batch.

2. LPO Code Examples

cURL

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.cpmp-site.org/price?asset=btc"

JavaScript (fetch)

const res = await fetch('https://api.cpmp-site.org/price?asset=eth', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const envelope = await res.json();
const data = envelope.data;
console.log(`ETH: $${data.price} (${data.cached ? 'cached' : 'live'})`);

Python

import requests

resp = requests.get(
    'https://api.cpmp-site.org/price',
    params={'asset': 'sol'},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
envelope = resp.json()
data = envelope['data']
print(f"SOL: ${data['price']} from {data['source']}")

Go

req, _ := http.NewRequest("GET", "https://api.cpmp-site.org/price?asset=btc", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
// decode resp.Body as JSON

3. LRS Code Examples

Get Usage Logs (JSON)

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/usage?asset=BTC&page=1&page_size=50"

Get Summary Report

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/summary?start_date=2026-04-01&end_date=2026-04-12"

3.1 Output Format Examples

CSV — Import to Excel / Google Sheetsformat=csv
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/usage?format=csv" \
  -o my-usage-report.csv
TSV — Import to Database / ETLformat=tsv
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/usage?format=tsv" \
  -o my-usage-report.tsv

# Load into PostgreSQL
COPY usage_logs FROM 'my-usage-report.tsv' DELIMITER E'\t' CSV HEADER;
Text — Quick Terminal Reviewformat=text
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/usage?format=text&asset=BTC"

# Output:
# LRS Usage Report — Page 1 | Page Size 100 | Total Records 482
# ================================================================================
# [2026-04-12T14:23:01Z] a1b2c3... | Asset: BTC | Price: 83421.57 | Source: coinbase | Cached: true | Latency: 7ms
Summary as CSVformat=csv
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://lrs.cpmp-site.org/reports/summary?format=csv" \
  -o summary.csv

# Output:
# metric,value
# total_requests,14820
# cache_hit_rate_pct,91.40
# avg_latency_ms,9.30
# date_range_start,2026-03-13
# date_range_end,2026-04-12

4. Supported Assets

The LPO supports all cryptocurrency assets available on 6 exchanges — Coinbase, Gemini, Kraken, Gate.io, Crypto.com, and OKX. 150 assets are prewarmed via real-time WebSocket feeds. Below is a sampling of commonly queried assets:

SymbolName
BTCBitcoin
ETHEthereum
SOLSolana
DOGEDogecoin
XRPXRP
AAVEAave
SymbolName
LINKChainlink
DOTPolkadot
AVAXAvalanche
UNIUniswap
LTCLitecoin
ℹ️ This is a sampling only. Any asset supported by Coinbase, Gemini, Kraken, Gate.io, Crypto.com, or OKX can be queried. 150 assets are prewarmed for instant response; others are fetched on demand.

Asset symbols are case-insensitive in requests. Responses always return uppercase.

5. Troubleshooting

SymptomLikely CauseFix
401 UnauthorizedMissing or invalid API keyCheck your Authorization: Bearer header
400 Bad RequestMissing asset paramAdd ?asset=btc to your request
429 Too Many RequestsRate limit exceededReduce request frequency or upgrade tier
High latency (>100ms)Cache miss + slow exchangeIncrease cache TTL or check exchange status
Empty LRS resultsDate range has no dataWiden start_date / end_date range
CSV has no data rowsFilters too narrowRemove asset or cached filter

6. Rate Limits

TierRequests/MonthLRSPrice
Free1,00010 reports/month$0/mo
Pro50,00010 reports/month$30/mo
Enterprise500,00010 reports/month$100/mo
UnlimitedUnlimitedUnlimited$300/mo
LifetimeUnlimited foreverUnlimited forever$3,000 one-time
ℹ️ Existing subscribers can add unlimited LRS for $20/month.

7. Endpoints Quick Reference

ServiceProtocolEndpointPort
LPOHTTPSapi.cpmp-site.org443
LRSHTTPSlrs.cpmp-site.org443
LPOUDPudp.cpmp-site.org2679
LRSUDPudp.cpmp-site.org2680
PrivateLink LPOTCPVPC Endpoint8080
PrivateLink LRSTCPVPC Endpoint9090

8. UDP Examples

LPO UDP Price QueryPort 2679
# Python
import socket, json
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
request = json.dumps({"api_key": "YOUR_API_KEY", "asset": "btc"}).encode()
sock.sendto(request, ("udp.cpmp-site.org", 2679))
data, _ = sock.recvfrom(4096)
print(json.loads(data))
LRS UDP Report QueryPort 2680
# Python
import socket, json
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
request = json.dumps({"api_key": "YOUR_API_KEY", "type": "summary"}).encode()
sock.sendto(request, ("udp.cpmp-site.org", 2680))
data, _ = sock.recvfrom(65535)
print(json.loads(data))

9. Operations Quick Reference

TaskCommand / Location
View app dashboardCloudWatch → Trinity-Beast-Application-Dashboard
Change cache TTLUPDATE application_parameters SET value='30' WHERE key='cache_ttl_seconds'
Change poll intervalUPDATE application_parameters SET value='90' WHERE key='config_poll_interval_seconds'
Change DB pool sizeUPDATE application_parameters SET value='50' WHERE key='db_max_open_conns'
Run sync job manuallyaws ecs run-task --task-definition trinity-beast-sync-job:1 ...
Port forward to Auroraaws ssm start-session --target ecs:<cluster>_<taskId>_<runtimeId> --document-name AWS-StartPortForwardingSessionToRemoteHost ...
Get container runtime IDaws ecs describe-tasks --tasks <id> --query 'tasks[0].containers[0].runtimeId'