On this page

ShortsInsights API

Paid API (1.0.0)

Authenticate with a bearer API key, list issuers, then fetch positions by stable issuer id.

get/issuers

List all tracked issuers with stable ShortsInsights ids and names.

get/issuers/{issuer_id}/positions

Fetch 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.

First callbash
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.

Requestbash
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.

429 responsejson
{
  "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.

StatusMeaning
401Missing or invalid API key
403Subscription does not include API access
404Resource not found
429Rate limit reached
500Server error
Error shapejson
{
  "error": "unauthorized",
  "message": "Invalid or missing API key."
}

Endpoint

List issuers

get/issuersBearer auth
Base URLhttps://api.dev.shortsinsights.com

List all tracked issuers and the stable ShortsInsights ids you use in other routes.

Authentication: Bearer token required.

Response / 200

Array of issuers.

last_updatedstring (date-time)nullable

When the dataset was last refreshed.

Errors

401Missing or invalid API key
403Subscription does not include API access
429Rate limit reached
bash
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.dev.shortsinsights.com/issuers"

Endpoint

Get issuer positions

get/issuers/{issuer_id}/positionsBearer auth
Base URLhttps://api.dev.shortsinsights.com

Fetch short positions disclosed against one issuer.

Authentication: Bearer token required.

Parameters

issuer_idpathstringrequiredexample 123

Stable si_issuer_id from /issuers.

Start with /issuers, copy the stable issuer id, then pass it directly in the path.

statusquerystringoptionalexample activeenum active | alldefault active

Controls whether you want the current view or the full history.

active current disclosed positions onlyall full historical record

Use active for the common "what is open now?" query. Use all when you need the full timeline.

Response / 200

issuerIssuer

Stable issuer id and display name.

status"active" | "all"

Echoes the requested status.

Matching positions.

last_updatedstring (date-time)nullable

When the dataset was last refreshed.

Errors

400Invalid request
401Missing or invalid API key
403Subscription does not include API access
404Issuer not found
429Rate limit reached
bash
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.dev.shortsinsights.com/issuers/123/positions?status=active"

Schema

Issuer

A tracked issuer.

si_issuer_idstringexample 123

Stable ShortsInsights issuer id used in other endpoints.

namestringexample ADIDAS AG

Display name as reported by regulators.

Examplejson
{
  "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-15

Disclosure date.

valuenumberexample 0.64

Net short position as % of issued capital.

position_holderstringexample Marshall Wace LLP

Name of the holder.

Examplejson
{
  "date": "2026-04-15",
  "value": 0.64,
  "position_holder": "Marshall Wace LLP"
}