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=signals

Generate API keys from your Enterprise Dashboard.

Endpoints

GET/api/v1/data

Retrieve Smart Money signals, AI sentiment, or tracked wallet data.

ParameterRequiredDescription
typeYesData type: signals | sentiment | wallets
limitNoResults per page (1-100, default 50)
sinceNoISO 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)

TierHourly requestsMonthly quota (Enterprise key)Notes
Free512h delay on AI feed
Starter50Real-time, no smart-money
Pro50010,000Up to 5 active enterprise keys
EnterpriseCustomCustom (≥ 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 wait

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

codeHTTPMeaningAction
invalid_api_key401Key missing, malformed, or revokedRegenerate from /dashboard/enterprise
invalid_params400Missing or invalid query paramsCheck the Endpoints section above
quota_exceeded429Monthly quota hit for this keyWait for reset (X-Quota-Reset) or upgrade
rate_limited429Hourly rate limit on the auth userBackoff and retry after Retry-After seconds
internal_error500Unexpected server errorContact support@pulsentric.com
service_unavailable503Temporary outage / dependency downRetry 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-26Documented quota response headers (X-Quota-Used, X-Quota-Limit, X-Quota-Reset) and added Retry-After on 429/503. Added the code field to all error responses for programmatic handling.
  • 2026-03-15Multichain expansion: chain_id + network_type now exposed on every signal/wallet row.
  • 2026-02-01Initial 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.