---
title: "PIPE / private-placement deal feed: US-listed issuers raising money through"
method: GET
path: "/v1/capital/private-placements"
---

# PIPE / private-placement deal feed: US-listed issuers raising money through

`GET /v1/capital/private-placements`

## Request

- Base URL: `https://api.alphanume.com`
- URL: `https://api.alphanume.com/v1/capital/private-placements`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

PIPE / private-placement deal feed: US-listed issuers raising money through
unregistered placements (PIPEs, registered directs with warrants, convertible
notes and preferreds, equity lines / ELOCs, SEPA pre-paid advances), each deal
graded 0-3 for how toxic -- how price-dependent and dilutive -- its terms are.

One row per 8-K private-placement deal event: an announcement (the securities
purchase agreement is signed and disclosed), a closing (funds received), an
amendment or price reset, or a termination; event_kind says which. announce_date
is the 8-K filing date and is the feed's clock; event_date and closing_date are
the dates the filing states. A deal announced and later closed is two rows sharing
ticker and cik under different accession_no values. Deal economics served per
row: gross_proceeds_usd (or committed_capacity_usd for an equity line),
shares_sold, price_per_share_usd, discount_to_prior_close_pct, price_basis
(fixed / variable_discount_to_market / lesser_of / unstated) with the variable
discount, lookback window and floor, reset_provision, warrant_coverage_pct with
exercise price and term, has_prefunded_warrants, original_issue_discount_pct,
the stated investors / investor type / placement agent / exemption, the resale
registration deadline and (once filed) the resale S-1 / S-3 form and dates, and
market_cap_at_announce_usd with proceeds_pct_of_market_cap.

toxicity_score, the 0-3 scale, derived from the stated terms:
3 = variable-price conversion (priced off a discount to future VWAP / lowest
close, or the lesser of a fixed price and market) or a VWAP-priced equity line
-- dilution grows as the price falls; 2 = a ratchet / price-reset provision,
or >= 100% warrant coverage at >= 15% discount to the prior close, or original
issue discount >= 10%; 1 = any common warrants, or a >= 10% discount, or any
OID, or an equity line without a stated pricing formula; 0 = fixed price at or
above market with at most pre-funded warrants; NULL = the terms live in an
exhibit v1 did not read. The grade summarizes structure, not the issuer's
prospects: a 0 can still be a large raise by a struggling company, which is what
proceeds_pct_of_market_cap is there to show.

Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro
key sees the full history.

Honest limits, stated plainly. v1 reads the 8-K body, not its exhibits, so a
deal whose economics live only in the attached purchase agreement carries
price_basis='unstated', terms_in_exhibit_flag=1 and a NULL toxicity_score --
filter min_toxicity to keep only graded rows, or read terms_in_exhibit_flag
before treating a NULL as benign. Investor names are frequently undisclosed
("certain institutional investors"); investor_names_stated is what the filing
says, nothing more. discount_to_prior_close_pct needs a Polygon daily bar for the
prior session and is NULL for unlisted or brand-new tickers and for
variable-priced deals. market_cap_at_announce_usd and proceeds_pct_of_market_cap
are NULL when the cap history does not cover the ticker; resale_* columns are
NULL until a resale registration is filed / effective. SPAC-related placements
(a PIPE into a de-SPAC, trust-extension financing) are flagged with
is_spac_related=1, not removed. Rows are never dropped for missing enrichment.
confidence (0-1) is a per-row quality signal for the extracted terms.
first_seen_at is when our pull first observed the 8-K (synthetic = filing time
for rows backfilled before launch).

Default order: newest announce_date first, then ticker, so the first page is
the most recent deals.

Pagination: results are capped at 50,000 rows per request; when the response
has has_more=true, pass next_cursor's cursor_date, cursor_ticker and cursor_id
back to fetch the next page.

## Query parameters

- `ticker` string
- `date` string
- `date_gte` string
- `date_lte` string
- `date_gt` string
- `date_lt` string
- `structure` 'common' | 'units_with_warrants' | 'convertible_note' | 'convertible_preferred' | 'equity_line' | 'sepa_prepaid_advance' | 'other'
- `event_kind` 'announcement' | 'closing' | 'amendment_or_reset' | 'termination' | 'unstated'
- `min_toxicity` integer
- `variable_price` string
- `has_warrants` string
- `spac` string
- `min_confidence` number
- `updated_since` string
- `cursor_date` string
- `cursor_ticker` string
- `cursor_id` integer

## Response `200`

Matching rows.

- PaginatedEnvelope
  - `count` integer, required
  - `data` object[], required
  - `has_more` boolean, required
  - `next_cursor` object, nullable, required: Keyset cursor: pass its fields back as the cursor_* query parameters to fetch the next page.

## Other responses

- `400`: Invalid or conflicting query parameters.
- `401`: Missing or unrecognized API key.
- `403`: PRO_SUBSCRIPTION_REQUIRED: the key's plan does not include API access (every endpoint requires an active Pro subscription), or this Pro-only dataset is not covered by the key. No choice of dates makes the request succeed. The data is not missing.
- `429`: Rate limit exceeded (600/min); the body carries retry_after_seconds.

---

[API](https://skmtc.dev/alphanume/apis/alphanume-api.md) · [All operations](https://skmtc.dev/alphanume/apis/alphanume-api/llms.txt) · [OpenAPI document](https://skmtc.dev/alphanume/apis/alphanume-api/revisions/2cb83f10bba4?raw)
