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: September 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. A request with more than 30 assets returns 400 ("Maximum 30 assets per request").
🎯 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, Bitstamp, Kraken, Gate.io, Crypto.com, and OKX. 360 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, Bitstamp, Kraken, Gate.io, Crypto.com, or OKX can be queried. 360 assets are prewarmed for instant response; others are fetched on demand.

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

5. Webhook Push

Webhook Push delivers live prices to your own endpoint on a fixed interval, over UDP and HTTPS, instead of you polling /price. LRS reports are included on every tier. Configure and manage a subscription from the account dashboard.

TierAssetsIntervalPrice
Starter960s$30/mo
Standard3015s$90/mo
Professional RECOMMENDEDUp to 606s$210/mo
EnterpriseUp to 603s$420/mo
ℹ️ Professional and Enterprise share the same 60-asset cap — the difference is delivery speed (6s vs 3s), not asset count. This keeps every subscribed asset inside markets liquid enough to actually supply a fresh price at that cadence.

For full setup, delivery-format details, and the push envelope shape, see Webhook Delivery Reporting.

6. 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
400 "Invalid date format"start_date/end_date not YYYY-MM-DDUse ISO date format
400 "cannot be in the future"start_date is after todayUse a start date on or before today
400 "must be on or before end_date"start_date is after end_dateSwap or correct the two dates
400 "cannot exceed 90 days"Explicit date range spans >90 daysNarrow the range or make separate requests
ℹ️ Date validation applies to all four report endpoints (/reports/usage, /reports/summary, /reports/report-usage, /reports/report-summary). A bare request with no dates uses the default lookback and is never rejected for range length — the 90-day cap only governs an explicit start_date/end_date window.

7. 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
PartnerUnlimited, no rate limitUnlimited$0/mo (AWS PrivateLink accounts)
ℹ️ Existing subscribers can add unlimited LRS to any tier for $20/month (the LRS Add-on).

8. 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

9. 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))

10. 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'