Enterprise API Documentation
Access Smart Money signals, AI sentiment data, and wallet analytics programmatically.
Authentication
All requests require an API key. Include it via one of:
# Option 1: x-api-key header
curl -H "x-api-key: cpai_your_key_here" \
https://app.pulsentric.com/api/v1/data?type=signals
# Option 2: Authorization Bearer
curl -H "Authorization: Bearer cpai_your_key_here" \
https://app.pulsentric.com/api/v1/data?type=signalsGenerate API keys from your Enterprise Dashboard.
Endpoints
/api/v1/dataRetrieve Smart Money signals, AI sentiment, or tracked wallet data.
| Parameter | Required | Description |
|---|---|---|
| type | Yes | Data type: signals | sentiment | wallets |
| limit | No | Results per page (1-100, default 50) |
| since | No | ISO 8601 timestamp — filter by created_at |
Data Types
type=signals — Smart Money Signals
{
"data": [
{
"id": "uuid",
"wallet_address": "0x...",
"tx_hash": "0x...",
"token_address": "0x...",
"token_symbol": "USDT",
"action": "buy",
"value_usd": 2400000,
"sentiment_score": 0.82,
"signal_type": "elite_sniper",
"chain_id": "ethereum",
"network_type": "evm",
"created_at": "2026-03-14T10:00:00Z"
}
],
"meta": { "type": "signals", "count": 1, "quota": { "used": 42, "limit": 10000 } }
}type=sentiment — AI Analysis Logs
{
"data": [
{
"id": "uuid",
"sentiment_score": 0.78,
"mood_label": "bullish",
"top_topics": ["ETH", "Dencun"],
"summary": "Strong bullish sentiment...",
"urgency": 3,
"confidence_score": 0.85,
"deception_score": 0.05,
"created_at": "2026-03-14T10:00:00Z"
}
]
}type=wallets — Tracked Smart Money Wallets
{
"data": [
{
"address": "0x...",
"label": "Jump Trading",
"win_rate": 0.78,
"total_trades": 450,
"avg_pnl_pct": 12.5,
"chain_id": "ethereum",
"network_type": "evm",
"last_active_at": "2026-03-14T10:00:00Z"
}
]
}Rate Limits & Quota
Three layers protect the platform: an hourly per-tier rate limit on user APIs, a monthly soft quota on enterprise keys, and Stripe Metered Billing for pay-as-you-go Enterprise customers. Metered usage is reported atomically via Stripe Meter Events with a Redis fallback queue — safe under concurrent load with no double-counting. See pricing for per-call rates.
Per-tier hourly rate limits (user APIs)
| Tier | Hourly requests | Monthly quota (Enterprise key) | Notes |
|---|---|---|---|
| Free | 5 | — | 12h delay on AI feed |
| Starter | 50 | — | Real-time, no smart-money |
| Pro | 500 | 10,000 | Up to 5 active enterprise keys |
| Enterprise | Custom | Custom (≥ 100,000) | Contact us for SLA |
Response headers
Every /api/v1/data response carries:
X-Quota-Used: 42
X-Quota-Limit: 10000
X-Quota-Reset: 2026-05-01T00:00:00Z # ISO 8601 UTC, next monthly reset
Retry-After: 60 # only on 429 / 503 — seconds to waitNeed higher limits? Contact enterprise@pulsentric.com — plans start at €2,000/month.
Error Codes
All errors return JSON: { error: string, code: string }. Use code for programmatic handling.
| code | HTTP | Meaning | Action |
|---|---|---|---|
| invalid_api_key | 401 | Key missing, malformed, or revoked | Regenerate from /dashboard/enterprise |
| invalid_params | 400 | Missing or invalid query params | Check the Endpoints section above |
| quota_exceeded | 429 | Monthly quota hit for this key | Wait for reset (X-Quota-Reset) or upgrade |
| rate_limited | 429 | Hourly rate limit on the auth user | Backoff and retry after Retry-After seconds |
| internal_error | 500 | Unexpected server error | Contact support@pulsentric.com |
| service_unavailable | 503 | Temporary outage / dependency down | Retry after Retry-After seconds |
SDK Examples
Node.js (fetch)
const API_KEY = process.env.PULSENTRIC_API_KEY;
const res = await fetch(
"https://app.pulsentric.com/api/v1/data?type=signals&limit=20",
{ headers: { "x-api-key": API_KEY } }
);
const { data, meta } = await res.json();
console.log("Signals:", data.length, "/ quota:", meta.quota);Python (requests)
import os, requests
api_key = os.environ["PULSENTRIC_API_KEY"]
r = requests.get(
"https://app.pulsentric.com/api/v1/data",
params={"type": "signals", "limit": 20},
headers={"x-api-key": api_key},
timeout=10,
)
r.raise_for_status()
payload = r.json()
print("Signals:", len(payload["data"]))API Changelog
- 2026-04-26 — Documented quota response headers (
X-Quota-Used,X-Quota-Limit,X-Quota-Reset) and addedRetry-Afteron 429/503. Added thecodefield to all error responses for programmatic handling. - 2026-03-15 — Multichain expansion:
chain_id+network_typenow exposed on every signal/wallet row. - 2026-02-01 — Initial v1 release:
/api/v1/data?type=signals|sentiment|wallets.
Breaking changes are announced ≥ 14 days ahead via email to all keys with traffic in the last 30 days. We never break a stable v1 endpoint without bumping to v2 in parallel.