Authorization: Bearer yb_.... See Authentication.
Use of the API is subject to the Yellowbrick Terms of Service. You may use Yellowbrick data for trading, research, and investment decisions. You may not use the API or the data to create, operate, or offer a product or service that conflicts with or competes with any Yellowbrick Investing Inc. service, including Yellowbrick and CEO Watcher.
How the pieces fit
Use the resources in this order.- Search finds companies and authors. You get a
companyIdor an authorusername. - Tags is the filter vocabulary. You get
slugvalues andtagTypeKeyvalues. - Filter sets are combinations of tags the key owner already saved. You get an
idto pass into the pitch list. - Pitches lists write-ups that match those identifiers, then returns one pitch by id.
Search
GET /api/v1/search?q=
q is a fuzzy match across:
- Author username and display name
- Company ticker, legal name, and alternate names
authors and companies. Take authors[].username for authorUsername on the pitch list, and companies[].companyId for companyId.
Tags
GET /api/v1/tags
Each tag has a slug (what you send) and sits in a type (tagTypeKey).
Catalog types (from the Yellowbrick taxonomy): market_cap, sector_industry, country_region, pitch_category, strategy, content_format, source. Some of these nest children under a parent, such as sector → industry.
Quality and pitch attributes (closed lists, also typed on the pitch list):
Use
slug in extraTags if you already have a filter-set payload. Prefer the typed parameters on GET /api/v1/pitches when you are building the query yourself. Use tagTypeKey in extraTagsNoneOf to invert that type.
Author return tokens are {period}_{abs|excess}_gte_{0|10|25|50}. Period is 6m, 1y, or 2y. Pitch return tokens are {period}_{abs|excess}_gte_pct{0|25|50|100} or {period}_{abs|excess}_gte_x{2|3|4|10}. Win rate is 50, 60, or 75 (percent, at least 8 pitches).
Filter sets
GET /api/v1/filter-sets
A filter set is a named, saved combination of tags on the key owner’s account. This API lists them. It does not create or edit them.
Each item has:
id— pass this asfilterSetIdson the pitch listdisplayName— the name you savedcriteria— the tags inside the set (tags.anyortagsByType, plusnoneOffor inverted types)
Pitches
GET /api/v1/pitches returns a page of pitches. GET /api/v1/pitches/{id} returns one pitch.
Unlocked pitch detail includes an archive object: whether a snapshot is ready (available), which write-up formats exist (pdf, mhtml, md), whether a linked attachment was captured (has_attachment), and whether a reader has already requested an archive.
How filters combine
Every constraint on the pitch list is AND’d together. A pitch must satisfy the company (if set), the author (if set), author badge / following (if set), the date range (if set), the extra tags (if set), and the filter sets (if set). Inside extraTags:- Slugs are grouped by type.
- Within one type, a pitch matches if it has any of those slugs (OR).
- Across types, a pitch must satisfy every type you sent (AND).
extraTagsNoneOflists type keys to flip: the pitch must not match that type’s slugs.
- Each set uses the same per-type OR / AND rules, plus that set’s
noneOf. - Several set ids are OR’d: the pitch matches if it matches any of the sets.
- Those sets as a group are still AND’d with
extraTagsand the other parameters.
companyId=123&extraTags=long&extraTags=value&filterSetIds=fil_a&filterSetIds=fil_b means this company, and long or value (same type: pitch category), and (set A or set B).
Archived documents
GET /api/v1/pitches/{id}/document returns a time-limited signed URL for a snapshot artifact: either a write-up or a linked attachment.
By default the response is JSON. Write-up:
artifact=attachment when archive.has_attachment is true):
response-content-disposition override so browsers download with that filename.
This endpoint is Premium-only (
403 premium-required if the key owner’s membership has lapsed). Locked author pitches still return 403. Missing or unfinished archives return 404. Passing both format and artifact returns 400.
What you can see
The key identifies the Premium account. Yellowbrick still applies that account’s access on every request.- If Premium lapses, every
/api/v1call returns403(premium-required). The key can still exist. - Author badge, author return, win rate, and pitch return are Premium filters. They are in the tag catalog and on the pitch list because this API is Premium-only.
- A Yellowbrick Premium membership does not unlock an author’s paywalled pitch. You still need access to that author.
is_locked: true. Title, summary, ticker, and company name are cleared. Only sector slugs remain.
On detail, a locked pitch still returns 200 with is_locked: true and the write-up fields withheld. archive is null when locked.
Errors
Responses use problem details:type, title, status, detail.
Bookmarks are not in this API.