get_reverse_split_authority
Companies whose board still holds reverse-split authority it may use without another shareholder vote: an approval on file (shareholder vote or written consent; tracker states consent_pending, voted_approved, ratio_fixed) not past a stated expiry, one row per company (its newest approval; other live ones in otherLiveAuthorityEpisodeIds). Soonest stated expiry first. Each row is the Reverse Splits page row (ticker, companyName, ratio, exchange, approvalPath, domicile, splitAuthority, authorityTerms, sourceUrl / sourceAccession, sourceDocuments: every document behind the approval with accession or URL) plus an "authority" block: episodeId, state, approvedDate, approvedRatio {fixed, min, max} (the per-split ratio or range approved), cumulativeCap (cap on the product of every split drawn on it), multiStep, expiresOn, expiryTerm, daysUntilExpiry, and room: capRatio + capBasis ("cumulative_cap", or "single_split_maximum" = no cumulative cap stated and nothing drawn, so one split up to the approved maximum), perSplitMax, usedSplits + usedRatio (product of the splits already executed on it; 1 = none drawn), remainingRatio (capRatio / usedRatio), exhausted, nextSplitMax, pendingRatio (a ratio the board set that has not taken effect) and a one-line label. The approval route is approvalPath.path (shareholder_vote, written_consent, fpi_written_resolution, pre_approved_range, board_only, depositary_ratio_change or unknown = "Not determined", not "no vote"). Ratios are 1-for-N factors and combine by product. Not measured is not "none remaining": room.remainingRatio null comes with room.notMeasuredReason ("cumulative_cap_not_stated", "ratio_not_stated" or "drawn_split_ratio_not_stated"), meaning the remaining room is not measured for that reason. Such rows are listed, never dropped, and are not full. expiresOn null = the documents read state no expiry, not "never expires". An empty list is what the tracker has on file, not evidence that no board holds authority. This screen covers approvals on file; a board that may split under its statute or charter with no approval at all shows as splitAuthority.boardMayActWithoutVote on a row and in the per-company lifecycle, and is not listed here on that basis alone. Locked rows are withheld, not absent. The facts are part of Signal8 Pro: a key not owned by a Pro account gets rows with locked: true and only ticker, companyName, hasPage and exchange (access "preview", lockedCount). minRemaining and expiringBefore are Pro-only filters (on a non-Pro key they apply to unlocked rows only; filtersLimitedToUnlocked: true). A row whose remaining room or expiry is not measured never matches those filters; excludedNotMeasured counts how many were left out for that reason. Paging uses limit and nextCursor. available: false or an HTTP 503 FEATURE_DISABLED = unavailable, and the response says nothing about any company. The data describes what is on file and carries no view on whether a split will happen, what it means for the price, or what anyone should do.
get_reverse_split_lifecycle
The reverse-split lifecycle Signal8 has tracked from a company's own SEC filings (proxies, 8-K Items 3.03/5.03/5.07, 6-Ks): one episode per split authority, newest first, each with its state (proposed, vote scheduled, approved, ratio set, effective date announced, charter filed, ... or closed), the ratio or authorised range, meeting / vote / effective dates, the state history, and the events behind it oldest first. Every event carries its source (accession and an EDGAR sourceUrl) and its facts; every stated fact carries the verbatim quote it was read from. Not stated means not measured, not "no": a fact with notStated:true (or a null field) means the documents read did not say it, not that it is false, zero or absent. coverage "unresolved" means the ticker could not be matched to an SEC registrant (not measured). coverage "tracked" with an empty episodes list means no episode has been tracked from the filings read since the tracker started; it is not evidence that no reverse split is planned. effectiveDate is the date the issuer stated, strictly parsed: a scheduled date, not a confirmation that the split happened (it can be postponed or abandoned). A conditional date ("the 25th trading day after the Trigger Event") is returned verbatim in effectiveCondition and is not a date; no date is computed from it. verification is copied from the tracker: "provisional" = one source, not cross-checked (the default, not "doubtful"); "verified" = cross-checked. Approval (present only when approvalAvailable is true): each episode carries approvalPath {path, label, quote, sourceUrl}: shareholder_vote, written_consent, fpi_written_resolution, pre_approved_range (the board set the ratio inside a range shareholders approved earlier), board_only (the company's own filing states no shareholder approval was required, quoted), depositary_ratio_change (an ADS ratio change by the depositary, no shareholder vote, the ordinary shares not consolidated) or unknown. The response also carries domicile {code, label, group, source} (EDGAR, else the latest 10-K / 20-F cover; null = not measured, not "Delaware") and splitAuthority {authority, basis, label, boardMayActWithoutVote, conditions, statute, quote, sourceUrl}. Only basis own_prior_board_only_announcement or charter_clause is board split authority on file: a charter clause is a standing power; own prior evidence is a PAST board-only split (dated in the label, conditional on its statute, e.g. NRS 78.207 needs authorized shares cut by the same ratio), not a power to skip a vote now, and the current split can still go to a vote. authority "unknown" or basis "domicile_default_only" is not a finding about the company: it only states what the domicile's law allows by default (e.g. "Domicile may permit board action; charter not checked"), not that this company can split without a vote. vote_required appears only as a labelled domicile default, not as a statement that a vote is needed. path "unknown" is not "no vote"; a missing proxy does not determine a path. An HTTP 503 FEATURE_DISABLED means the lifecycle tracker is switched off and the response says nothing about the company's splits.
get_reverse_splits_list
The cross-company reverse-split lists the Signal8 Reverse Splits page serves, one view per call. view "upcoming" = splits with an effective date from tomorrow through 30 US market days ahead, the vendor market calendar union Signal8's SEC-filing tracker (filings, exchange and depositary notices); "recent" = the same union for effective dates in the past 30 days; "approved_no_date" = tracked episodes where shareholders (or the board, where no vote is required) have approved a reverse split but no effective date is stated yet; "vote_pending" = tracked episodes where a reverse split is proposed and the shareholder vote has not happened yet; "cancelled" = tracked episodes that ended without the split taking effect in the past 90 days (withdrawn by the company, a vote that did not approve it, an approved authority that expired unused, a meeting postponed indefinitely), with a cancelled object (outcome, outcomeLabel, endedOn, endedOnBasis, laterEpisode when the company has a newer open proposal) and the closing document as the source; older ended episodes are on the separate ended-reverse-splits tool. A security sits on exactly one of the first four views (upcoming, then recent, then approved_no_date, then vote_pending), with one exception: a split the company's own filing dates is on upcoming even when the same company also has a different, later split proposal awaiting a vote, which is then on vote_pending too; "cancelled" may repeat a company another view lists. Each row carries ticker, companyName, hasPage, source ("market_calendar" or "tracker"), stage + stageLabel, trackerState, ratio (or ratioMin / ratioMax for an authorised range), meetingDate, approvedDate, effectiveDate, effectiveDateSource, marketCalendarAgrees / marketCalendarDate / marketCalendarRatio, effectiveCondition, verification, marketConfirmation (recent only), marketCapUsd + capBucket, securityType, exchange, cik, sourceUrl / sourceAccession / sourceFormType / sourceFiledDate / sourceLabel, sourceDocuments (every document behind the episode), quote, adsRatioChange, approvalPath, domicile, splitAuthority and authorityTerms. Null means not measured or not stated: not "no split", not zero, not "no vote needed" and not "no date". A null ratio = the documents state none yet; a null marketCapUsd = cap not measured (capBucket is then null, not "nano"); a null verification = no tracked episode; a null domicile = not measured (not "Delaware"); a null marketConfirmation = the price step was not measured. An empty rows array on a view is normal and is not evidence that no company is splitting. completeness says what the view is: "scheduled_as_of_now" (upcoming) and "recorded_as_of_now" (recent) are what is known as of now, not "all reverse splits"; "tracked_episodes" is what the tracker has read from filings since it started, not every company. A scheduled split can still be postponed or cancelled: it is scheduled, not confirmed. Dates: effectiveDate is the scheduled effective date (vendor calendar, or the issuer-stated date strictly parsed from the filing); a filing or listing-rule deadline is not an effective date and does not appear in this field. A conditional date ("the 25th trading day after...") is returned verbatim in effectiveCondition and is not a date. effectiveDateSource says where effectiveDate came from: "filing" = the issuer stated it; "market_calendar" = the filing states no date and the vendor calendar supplies it. marketCalendarAgrees is a cross-check on a tracker row the calendar also lists: true = same date and ratio; false = at least one differs and marketCalendarDate / marketCalendarRatio hold the calendar's value (the filing's value is the row's value, and the two sources disagree); null or absent = not compared (no calendar row). meetingDate is the shareholder meeting date, not the split date. Approval and authority: approvalPath.path is shareholder_vote, written_consent, fpi_written_resolution, pre_approved_range (the board sets the ratio inside a range shareholders approved earlier), board_only (the issuer's own filing says no shareholder approval is required, quoted), depositary_ratio_change (an ADS ratio change by the depositary, no vote) or unknown ("Not determined", not "no vote"). splitAuthority.boardMayActWithoutVote is true only from the issuer's own filing or charter; a domicile default alone is not a finding. authorityTerms is the authority behind the episode: a cumulativeCap (the board may split in steps, each within the cap, without a new vote until the authority expires), multiStep, the expiry, and what executed splits already used; null = the documents state nothing beyond the ratio. Locked rows are withheld, not absent. The split facts on every view are part of Signal8 Pro. A caller whose API key is not owned by a Pro account gets every row with locked: true and only ticker, companyName, hasPage and exchange on it; the response then carries access: "preview", lockedCount (how many rows are locked) and rowLimit. A locked row means the facts exist and were not shown to this caller (they need Signal8 Pro); it does not mean "no split". access: "full" = every row carries its facts. filtersLimitedToUnlocked: true = a board / domicile filter was applied to unlocked rows only (locked rows are left out entirely, because matching them would reveal the fact through membership). Filters apply server-side: cap (scanner buckets), type (security type), exchange, board ("without_vote": board split authority on file, from the issuer's own filing or charter) and domicile. Each accepts "not_measured" to select rows where that fact was not measured; an unmeasured row never matches a measured bucket. totalCount is the filtered list (locked rows included), unfilteredCount the view before filters, capUnknownCount the rows whose cap was not measured (on the calendar views). Paging uses limit / offset; truncated: true = more rows exist. available: false with reason "tracker_not_enabled" (the tracker views) means the tracker is switched off, not that nothing is pending. An HTTP 503 FEATURE_DISABLED means the page is switched off, and the response then says nothing about any company's split. The data describes what is on file and carries no view on whether a split will happen, what it means for the price, or what anyone should do.