Overview
Everything your integration is doing right now — quota burn, key health, and what the Wire is reading into today's tape.
Requests
Successful API calls this billing cycle
Plan
Growth- ✓5,000,000 calls per cycle
- ✓50 requests per second
- ✓5 years of history depth
- ✓Wire signals, streams and SSE
Start in 30 seconds
curl -s 'https://ashercore.com/api/market/quote?symbol=BTC' \ -H 'Authorization: Bearer core_live_ab12…9f04'
const r = await fetch('https://ashercore.com/api/wire/signals?limit=10', {
headers: { Authorization: 'Bearer ' + process.env.ASHERCORE_KEY }
});
const { assets } = await r.json();
// assets[0] -> { asset, symbol, score, bias, mentions, articles }Latest from the Wire
Every story is scored before it reaches you
Net news bias
Score −1 to +1
Usage & limits
Quota is counted per successful call and resets on the first of each cycle. Rate limits are enforced per key, per second, with a short burst allowance.
Where your calls go
Per-endpoint breakdown
| Endpoint | Share | Calls | Avg latency | Errors |
|---|
Plans
Changes are made in Stripe — checkout for an upgrade, the billing portal for anything else
| Plan | Calls / cycle | Rate limit | History | Price | |
|---|---|---|---|---|---|
| Sandbox Current Test keys, delayed data | 10,000 | 1 / sec | 30 days | Free | |
| Starter Current One app, one desk | 500,000 | 10 / sec | 1 year | $29 | |
| Growth Current Production workloads | 5,000,000 | 50 / sec | 5 years | $99 | |
| Scale Current Desks, resellers, embeds at volume | 25,000,000 | 200 / sec | Full archive | $299 |
429 with a Retry-After header. We never fail silently and we never bill you for an error.API keys
Keys are issued and hashed on our side. We show the full secret once, at creation — after that you get a hint and nothing more. Rotating revokes the old key immediately, so swap it in before you rotate.
Live key
—
core_live_ab12••••••••••••••••••••••••9f04
Authorization: Bearer <key>, or as ?key= when a header is impossible — browser embeds, for example.All keys
—
| Name | Key | Environment | Calls (30d) | Status |
|---|
Endpoints
Fifteen JSON endpoints across market data and the Wire. Everything is GET, everything is cacheable, and every response carries updated so you can tell fresh from cached.
Market data
Prices, candles, reference and derivatives context
Asher Wire
News, signals and the live feed
Response envelope
Every payload is a plain object. No envelopes to unwrap, no pagination cursors you have to decode.
{
"updated": "2026-08-17T18:03:33.509Z",
"source": "wire",
"count": 6,
"assets": [ { "asset": "BTC", "score": 0.34 } ]
}Errors
400 | Bad parameter. The message names the field. |
401 | Missing or revoked key. |
403 | Your plan does not reach that far back. |
429 | Rate or quota. Honour Retry-After. |
5xx | Ours. Retry with backoff; we page on it. |
Test console
Fires a real request against the live API from your browser and shows exactly what comes back — status, latency, payload size and the JSON itself.
Request
GETResponse
Streams
A stream is a saved filter set minted into a token. Instead of rebuilding a twelve-parameter query on every client, you save it once and call ?stream=st_…. Change the filters and every consumer follows, no redeploy.
Create a stream
Calling a stream
curl -s 'https://ashercore.com/api/wire/headlines?stream=st_9c41f0e2&limit=20'
Stream tokens are read-only and safe in front-end code. Revoke one and every embed using it stops within seconds.
Embeds & live push
Five drop-in widgets, one script tag each. They inherit your page's light or dark theme, render server-timed data, and never phone home to anyone but us.
Widgets
Preview renders live AsherCore data
Live push · Server-Sent Events
GET /api/wire/live
One long-lived connection, one event per story, already scored. No polling, no webhook infrastructure to run, and it replays the last event id after a reconnect.
Consuming it
const es = new EventSource(
'https://ashercore.com/api/wire/live?stream=st_9c41f0e2'
);
es.addEventListener('story', (e) => {
const s = JSON.parse(e.data);
if (s.signal.bias === 'bearish') hedge(s.signal.assets);
});Headlines
The same feed your integration receives. Each story arrives with a machine-readable signal — a bias, the assets it touches, and the reasoning behind the call.
Signal board
Net news bias per asset, scored −1 to +1 and joined to the live tape. Symbols map straight onto market endpoints, so a bearish read and the price that ignored it sit in the same row.
Board
Click a row for the stories behind the score
| Asset | Symbol | Score | Bias | Mentions | Breakdown | Last price |
|---|
Account & billing
Who you are to us, what you are on, and every invoice we have raised.
Profile
SavedInvoices & payment method
Held by Stripe, not by us
Every invoice, receipt, card change and cancellation is in your Stripe billing portal. We never hold your card number, so we cannot list it here.
Current plan
Growth25M calls, 200 req/sec, the full archive. Stripe shows the exact amount before you confirm.
Danger zone
Closing your account deletes your saved layouts, strategies, exchange credentials and alert subscriptions, and revokes your API key. It does not cancel Stripe billing — cancel that first, in the billing portal above, or we will refuse the deletion.