Skip to content

Record an evidence-link open (optional)

POST
/api/b2b/telemetry/proof-open
curl --request POST \
--url https://api.stockalloy.com/api/b2b/telemetry/proof-open \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "evidence_key": "example", "cik": "example", "source_accession": "example", "series_key": "example", "metric_id": "example", "surface": "example", "viewer_url": "example" }'

Optional integration telemetry: record that a user opened an evidence link in your product. Fire-and-forget; returns 202 immediately. Not counted against your monthly quota (rate limit still applies).

Media typeapplication/json
object
evidence_key
required
string
cik
string
source_accession
string
series_key
string
metric_id
string
surface

Where the open happened in your product (free-form label).

string
viewer_url
string
Examplegenerated
{
"evidence_key": "example",
"cik": "example",
"source_accession": "example",
"series_key": "example",
"metric_id": "example",
"surface": "example",
"viewer_url": "example"
}

Accepted.

Media typeapplication/json
object
ok
boolean
Example
{
"ok": true
}

Invalid request — missing/invalid fields, malformed JSON, or an unsupported scope combination.

Media typeapplication/json
object
error
required

Human-readable error message.

string
Example
{
"error": "query is required"
}

Missing or invalid API key.

Media typeapplication/json
object
error
required

Human-readable error message.

string
Example
{
"error": "API key required"
}

Key revoked/disabled/expired, account disabled, key not entitled for this product, or cross-company search not enabled for this key.

Media typeapplication/json
object
error
required

Human-readable error message.

string
Example
{
"error": "API key has expired"
}

Rate limit exceeded (per-minute) or quota exceeded (daily/monthly, account-level or per-key). Distinguish by body shape.

Media typeapplication/json
One of:
object
error
required
string
Allowed value: Rate limit exceeded
retryAfter
required

Seconds until the window resets.

integer
limit
required

Requests allowed per minute for this key.

integer
windowMs
required
integer
Allowed value: 60000
Examples

Per-minute rate limit

{
"error": "Rate limit exceeded",
"retryAfter": 31,
"limit": 60,
"windowMs": 60000
}
X-RateLimit-Limit
integer

Requests allowed per minute for this key.

X-RateLimit-Remaining
integer

Requests remaining in the current minute window.

X-RateLimit-Reset
integer

Unix timestamp (seconds) when the window resets.

Retry-After
integer

Seconds to wait before retrying (429 only).

Unexpected server error.

Media typeapplication/json
object
error
required

Human-readable error message.

string
Example
{
"error": "Facts lookup failed"
}