Field Reference
Every enum value and every error, in one place. Values are camelCase.
Enums
Events
| Field | Values | Meaning |
|---|---|---|
eventClass | market, asset, call | A development across posts; posts about one asset; accounts taking positions |
eventType | security, listing, regulatory, macro, protocol, company, marketFlow, price, social, other | What kind of development. Can be null. eventType=spam is a 400 |
implication | bullish, bearish, mixed, unclear | Likely direction for the assets named. Can be null |
alertAction | alert, monitor | Impactful, or worth watching. Nothing else is served |
novelty | new, update | A story's first reading, or a later one |
assetClass (parameter) | crypto, equity | On events, arcs and call episodes. Events naming no asset come through either way |
sort (events) | latest, relevant | Newest first, or the last 24 hours ranked |
positions.side | long, short, mixed | The larger side, mixed on a tie. Null when both are 0 |
citedSources[].source | twitter, telegram, "" | Where the post was made. On telegram, handle is not an X handle |
Storylines and Arcs
| Field | Values | Meaning |
|---|---|---|
status (storyline) | open, dormant | dormant after three quiet days, until an event adds something. As a parameter, any reads both |
relation | origin, update, confirmation, contradiction, mitigation, consequence, reaction, context | How an event relates to its storyline. See Relations |
status (arc) | active, retired | A storyline's arcId names only an active arc |
sort (arcs) | latest, storylines, events | Active arcs by newest event, or most storylines or events |
Entities
| Field | Values | Meaning |
|---|---|---|
entityType | token, equity, project, person, organisation | Note the spelling organisation |
matchedOn | symbol, cashtag, name, alias, tickerRoot, exchangeSymbol, handle, contractAddress, externalId | Which identifier a /v3/entities query hit. See scores |
Market
| Field | Values | Meaning |
|---|---|---|
period (mindshare) | 1h, 4h, 24h, 7d | Default 4h |
hot | true, false, null | Heating up in the last hour. null with period=1h |
formulaVersion | e.g. sentiment.v4 | Do not compare call book rows across versions |
Calls
| Field | Values | Meaning |
|---|---|---|
callAction | open, reaffirm, add, trim, reverse, close, stopOut | What one post did to a position |
setup | technical, momentum, fade, accumulation | How the post reads the trade. Null if unsaid |
thesis | macro, narrative, event | What will drive the move. Null if unsaid |
source | twitter, telegram | Null when untraceable. On telegram, handle is null and channel is set |
direction | long, short | |
status (episode) | open, closed | |
horizon | scalp, swing, position, unspecified | Sets the expiry: 48 hours, 14, 90 or 30 days |
closeReason | close, reverse, stopOut, expiry | expiry: nobody closed it |
track.alphaScore | -1 to 1 | See Track |
track.hitRate | 0 to 1 | Share of scored positions that made money |
People
| Field | Values | Meaning |
|---|---|---|
metric (parameter) | standing | The only metric |
Key Status
| Field | Values | Meaning |
|---|---|---|
plan | payg, grow, enterprise | Sets the history. A Free key reads payg |
billingMode | deposit, arrears | A prepaid balance, or a subscription billed after use |
owner | user, org | Whose account the numbers belong to |
Query Values
| Parameter | Values |
|---|---|
order | desc, asc |
Errors
Every v3 error has the same body:
{
"code": "ERR_INVALID_PARAMETER",
"message": "Invalid parameters",
"details": [
{
"field": "query.eventType",
"message": "Invalid enum value. Expected 'security' | 'listing' | 'regulatory' | 'macro' | 'protocol' | 'company' | 'marketFlow' | 'price' | 'social' | 'other', received 'spam'"
}
],
"errorId": "8d935689",
"requestId": "4b181263-0d36-45bf-9fb5-999f25d4ed5f"
}
| Field | Notes |
|---|---|
code | Stable. Branch on it, or on the status |
message | Human-readable. The wording can change, so do not match on it, except the three 401 messages in Authentication and the two plan 403 messages in Access, which name the next step |
details | Present when a parameter failed validation: field names it (query.from, query.entityIds.0), message says why |
errorId | Groups the same failure across requests |
requestId | Unique to this request, also in the x-request-id header. Send your own x-request-id (1 to 128 letters, digits, ., _, -) to set it. Quote it to support |
| Status | code | When | Next step |
|---|---|---|---|
400 | ERR_INVALID_PARAMETER | A bad, missing or unknown parameter, an unknown id or handle, or a range before your history. See common errors | Read details, else message, and fix that parameter |
401 | ERR_UNAUTHORIZED | The key is missing or invalid, or checking it failed | See Authentication |
403 | ERR_FORBIDDEN | The v3 API is free on the Pay-as-you-go and Grow plans. Upgrade at …: a Free key, on any endpoint but /v3/key-status | Upgrade in the Developer Portal. See Access |
403 | ERR_FORBIDDEN | API key does not have the required scope: …: a paid key without the endpoint | Email [email protected] with the requestId |
403 | ERR_FORBIDDEN | Enterprise API keys require explicit configuration. Contact support. | Email [email protected] with the requestId |
404 | ERR_NOT_FOUND | No route matches GET /v3/… | Check the path against the endpoint list |
429 | ERR_RATE_LIMIT_EXCEEDED | Over the per-minute limit, of the key or the IP | Wait RateLimit-Reset seconds |
500 | ERR_INTERNAL_SERVER_ERROR | Our side | Retry once, then send us errorId and requestId |
503 | ERR_SERVICE_UNAVAILABLE | The key could not be checked just then, or search is down | Retry after a few seconds. For search, you can also drop q |
Worth retrying unchanged: ERR_RATE_LIMIT_EXCEEDED, 500, 503, and a
401 saying Error validating API key. Everything else fails the same way
until you change the request, key, plan or balance. During a restart, a 503
can come with only message: retry it too.
Response Headers
| Header | On | Meaning |
|---|---|---|
x-request-id | Every response | The requestId. Quote it when you contact us |
x-elfa-credits | Every response once your key is accepted | What this request cost, in credits |
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy | Every response | When X-RateLimit-* is also present: your key's limit, what is left, and seconds until the window resets. Otherwise: the per-IP limit |
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset | Only responses that carry your key's limit | The same limits. X-RateLimit-Reset is a Unix timestamp, not a number of seconds |