Skip to main content
POST

Overview

This endpoint answers borrowability for a batch of symbols against today’s easy-to-borrow list. Use it rather than fetching the whole list when you only care about a handful of symbols. It is a POST rather than a GET because a symbol list has no practical URL-length limit.

Normalization and duplicates

Symbols are uppercased and trimmed before the lookup, and duplicates collapse. Asking for ["aapl", " AAPL ", "AAPL"] returns one entry:
Because duplicates collapse, count can be lower than the number of symbols you sent. Read answers out of results by uppercase key — never by zipping results against your request array by index. This is the single easiest thing to get wrong when integrating.

Limits

Errors

All errors share one envelope:
There is no 404. A symbol that is not on the list is a valid false answer, not a missing resource. A query of only blanks — {"symbols": ["", " "]} — is a 400 rather than a 200 with empty results, so an unusable request is never answered with something that looks like a real result.

Interpreting the result

A false answer means the symbol is hard to borrow: it is not on today’s list, and shares must be located before a short sale. Treat it as “this needs a locate first”, not “this cannot be shorted at all”. Requesting a locate is not currently supported through the API. This endpoint reads the same underlying set as GET /v1/etb, so the two can never disagree. The set is replaced once per trading day before market open and does not change intraday — see Freshness.

Authorizations

Authorization
string
header
required

OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.

Body

application/json

The symbols to check. 1–1000 entries, case-insensitive, whitespace-trimmed.

Batch borrowability query. Symbols are uppercased and trimmed before the lookup, and duplicates that normalize to the same symbol collapse into a single entry in the response.

symbols
string[]
required

Symbols to check. Case-insensitive and whitespace-trimmed, so aapl, AAPL, and AAPL are the same symbol and return one entry. A request of only blank strings is rejected with 400 MISSING_SYMBOLS rather than answered with an empty result.

Required array length: 1 - 1000 elements
Example:

Response

Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid false answer, not a missing resource.

Borrowability answers keyed by normalized (uppercase) symbol.

results
object

One entry per distinct normalized symbol. true means easy to borrow (a short sale needs no extra step); false means hard to borrow (the symbol is not on today's list and needs a locate first). Read answers out of this object by uppercase key — do not match them against your request array by index, because normalization collapses duplicates.

Example:
count
integer

Number of entries in results. This can be lower than the number of symbols you sent, because duplicates collapse after normalization.