ShortsInsights API
Paid API (1.0.0)
Authenticate with a bearer API key, list issuers, then fetch positions by stable issuer id.
/issuersList all tracked issuers with stable ShortsInsights ids and names.
/issuers/{issuer_id}/positionsFetch short positions for one issuer.
Overview
All requests go to https://api.dev.shortsinsights.com and return JSON. Start with /issuers, copy a si_issuer_id, then query positions with/issuers/{issuer_id}/positions.
The API stays intentionally small: one endpoint for discovery, one endpoint for issuer-level position data.
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.dev.shortsinsights.com/issuers"Authentication
Send your API key in the Authorization header as a bearer token.
Keys are created in your account settings. Keep one key per integration and rotate on exposure.
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.dev.shortsinsights.com/issuers"Rate limits
Plans are capped at 100 req/min and 1,000 req/day. When a limit is exceeded you get 429 until the window resets.
{
"error": "rate_limit_exceeded",
"message": "Daily request limit reached.",
"limit": 1000,
"window": "day"
}Errors
Errors return JSON with a stable error code and a human-readablemessage.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Subscription does not include API access |
| 404 | Resource not found |
| 429 | Rate limit reached |
| 500 | Server error |
{
"error": "unauthorized",
"message": "Invalid or missing API key."
}Endpoint
List issuers
/issuersBearer authhttps://api.dev.shortsinsights.comList all tracked issuers and the stable ShortsInsights ids you use in other routes.
Authentication: Bearer token required.
Response / 200
dataIssuer[]Array of issuers.
last_updatedstring (date-time)nullableWhen the dataset was last refreshed.
Errors
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.dev.shortsinsights.com/issuers"Endpoint
Get issuer positions
/issuers/{issuer_id}/positionsBearer authhttps://api.dev.shortsinsights.comFetch short positions disclosed against one issuer.
Authentication: Bearer token required.
Parameters
issuer_idpathstringrequiredexample 123Stable si_issuer_id from /issuers.
Start with /issuers, copy the stable issuer id, then pass it directly in the path.
statusquerystringoptionalexample activeenum active | alldefault activeControls whether you want the current view or the full history.
active current disclosed positions onlyall full historical recordUse active for the common "what is open now?" query. Use all when you need the full timeline.
Response / 200
issuerIssuerStable issuer id and display name.
status"active" | "all"Echoes the requested status.
dataIssuerPosition[]Matching positions.
last_updatedstring (date-time)nullableWhen the dataset was last refreshed.
Errors
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.dev.shortsinsights.com/issuers/123/positions?status=active"Schema
Issuer
A tracked issuer.
si_issuer_idstringexample 123Stable ShortsInsights issuer id used in other endpoints.
namestringexample ADIDAS AGDisplay name as reported by regulators.
{
"si_issuer_id": "123",
"name": "ADIDAS AG"
}Schema
IssuerPosition
A single disclosed short position for an issuer on a given date.
datestring (date)example 2026-04-15Disclosure date.
valuenumberexample 0.64Net short position as % of issued capital.
position_holderstringexample Marshall Wace LLPName of the holder.
{
"date": "2026-04-15",
"value": 0.64,
"position_holder": "Marshall Wace LLP"
}