← Docs

# API

Pay-as-you-go REST API for source profiles, ticker consensus, and public dispatches. Charged per call against your credit balance.

# Authentication

Generate a key at /settings/api-keys. Pass it as a bearer token:

Authorization: Bearer mj_live_…

Keys are shown once at creation — store them somewhere safe. Revoke any time from settings.

# Pricing

  • GET /sources/:handle1 credit
  • GET /positions/:ticker1 credit
  • GET /dispatches/:id5 credits

Credits debit from the key owner's balance. If you hit zero you'll get 402 Insufficient credits. Errors charged at the same rate as successes — we don't retry on your behalf.

# Endpoints

GET/api/public/v1/sources/:handle

Analyst profile for a tracked source: tracked positions with stance, since, optional note. Handle is the X/Twitter handle without the @.

Request
curl https://www.myjunto.xyz/api/public/v1/sources/crypto_condom \
  -H "Authorization: Bearer mj_live_…"
Response
{
  "handle": "crypto_condom",
  "display_name": "CryptoCondom",
  "avatar_url": "…",
  "summary": "Contrarian deep-dive analyst…",
  "positions": {
    "BB": { "stance": "bullish", "since": "2026-05-09", "note": "generational make-it trade" },
    "LPTH": { "stance": "bullish", "since": "2026-04-24" }
  },
  "updated_at": "2026-05-26T19:30:00Z"
}
GET/api/public/v1/positions/:ticker

Cross-source consensus on a ticker: every analyst with a tracked stance, plus aggregate counts.

Request
curl https://www.myjunto.xyz/api/public/v1/positions/BB \
  -H "Authorization: Bearer mj_live_…"
Response
{
  "ticker": "BB",
  "source_count": 4,
  "counts": { "bullish": 3, "neutral": 1 },
  "sources": [
    { "handle": "crypto_condom", "stance": "bullish", "since": "2026-05-09" },
    …
  ]
}
GET/api/public/v1/dispatches/:id

Full content of a single public dispatch (newsletter run). Returns 404 for private dispatches.

Request
curl https://www.myjunto.xyz/api/public/v1/dispatches/<run_id> \
  -H "Authorization: Bearer mj_live_…"
Response
{
  "id": "…",
  "newsletter_id": "…",
  "newsletter_name": "Crypto Daily Brief",
  "subject": "Tuesday brief — rotation building",
  "content": "# …",
  "created_at": "2026-05-26T14:00:00Z"
}

# Errors

  • 401 — missing, malformed, or revoked key
  • 402 — insufficient credit balance
  • 404 — resource not found or not public
  • 500 — internal error; credit still debited, contact support if persistent