Company Data Endpoints
Public company profiles, ticker short-link resolution, and the SEC-derived company terminal.
Company data endpoints serve the public company pages on Sureshake: the
published company profile behind www.sureshake.com/c/{slug}, the
ticker-to-company resolver behind the www.sureshake.com/t/{ticker} short
links, and the company terminal — SEC-EDGAR-derived public reference data for
public companies.
All three endpoints are public reads. The profile and ticker endpoints need
no authentication at all; the company terminal accepts an optional
Authorization: Bearer $TOKEN header to upgrade the view when your account
has additional permissions.
- Error responses use the standard error envelope:
{ "error": { "code", "message", "traceId" } }. - The examples below use Bentley Systems (NASDAQ:
BSY, slugbentley-systems-inc), a real public reference profile.
Get Public Company Profile
Retrieve the published public profile for a company by slug. This is the
read model behind the public company page at www.sureshake.com/c/{slug}.
/v2/entities/public/:slugcurl "https://api.sureshake.com/v2/entities/public/bentley-systems-inc"
const response = await fetch( 'https://api.sureshake.com/v2/entities/public/bentley-systems-inc', ); const profile = await response.json();
Authentication is optional. When you send a bearer token, viewer-specific
fields reflect your session: isOwner, stats.isFollowing,
stats.followRequestStatus, and connection-gated publicContact fields.
Response fields
| Field | Type | Description |
|---|---|---|
entity | object | Core identity: id, name, slug, description, logoUrl, bannerUrl, entityType, verified, location, createdAt, claimStatus (not_claimable | claimed | claim_pending | unclaimed), canClaim. |
profile | object | null | Extended profile: legalName, tagline, websiteUrl, businessDescription, socialLinks, employeeCount, verificationStatus, and similar fields. null when no profile has been published. |
personnel | array | Publicly listed team members. |
addresses | array | Public addresses (street, city, state, postalCode, country, …). |
stats | object | followersCount, creditReferencesCount, customerReferencesCount, isFollowing, followRequestStatus. |
isOwner | boolean | Whether the authenticated caller manages this entity. Always false for anonymous requests. |
publicContact | object | Visibility-filtered contact fields. Each field carries its visibility (public | connected | private), provenance (visibilitySource), and a redactionReason when hidden. |
capitalGraph | object | Capital Graph panel data: template, eligibility and canonicalPath, portfolio companies, public investors, related entities, and the verification badge. |
{
"entity": {
"id": "5210b6a3-5677-4bd9-8f8d-6e9dab011a28",
"name": "Bentley Systems, Incorporated",
"slug": "bentley-systems-inc",
"description": "Public infrastructure engineering software company providing modeling, simulation, collaboration, digital twin, asset analytics, and infrastructure cloud software for design, construction, and operations across global infrastructure sectors.",
"logoUrl": null,
"bannerUrl": null,
"entityType": "company",
"verified": false,
"location": "685 Stockton Drive, Exton, PA 19341, United States",
"createdAt": "2026-07-22T21:39:45.000Z",
"claimStatus": "unclaimed",
"canClaim": false
},
"profile": {
"legalName": null,
"tagline": "company",
"websiteUrl": "https://bentley.com/",
"businessDescription": "Public infrastructure engineering software company...",
"consentPublicRecords": true,
"verificationStatus": "unverified",
"...": "additional profile fields elided"
},
"personnel": [],
"addresses": [],
"stats": {
"followersCount": 0,
"creditReferencesCount": 0,
"customerReferencesCount": 0,
"isFollowing": false,
"followRequestStatus": null
},
"isOwner": false,
"publicContact": {
"viewerRelationship": "anonymous",
"fields": [
{
"kind": "website",
"label": "Website",
"value": "https://bentley.com/",
"href": "https://bentley.com/",
"visibility": "public",
"visibilitySource": "entity_profile",
"viewerRelationship": "anonymous",
"redacted": false,
"redactionReason": null
}
]
},
"capitalGraph": {
"graphStatus": "available",
"template": "company",
"eligibility": {
"routeKind": "entity",
"template": "company",
"canonicalPath": "/c/bentley-systems-inc",
"...": "indexability and reason codes elided"
},
"...": "portfolio, investor, and verification badge data elided"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Directory profile not found",
"traceId": "O8K4iaFdhawuhb-Aamb6d"
}
}Resolve a Ticker to a Company
Resolve an exchange ticker (e.g. BSY) or a Sureshake-native ticker to the
canonical company slug and path. This endpoint backs the
www.sureshake.com/t/{ticker} short links — /t/BSY redirects to
/c/bentley-systems-inc.
/v2/entities/public/by-ticker/:tickercurl "https://api.sureshake.com/v2/entities/public/by-ticker/BSY"
const response = await fetch(
'https://api.sureshake.com/v2/entities/public/by-ticker/BSY',
);
const { data } = await response.json();
// data.canonicalPath === '/c/bentley-systems-inc'Resolution rules:
- Case-insensitive.
bsy,BSY, andBsyall resolve identically. - Sureshake-native tickers win. A company's Sureshake-assigned ticker is
checked first, then its primary exchange ticker.
matchedBytells you which one matched. - Only live companies resolve. A ticker only resolves when the company is
live in the public directory. Anything else — unknown tickers, delisted or
unpublished companies — returns
404.
Response fields (data)
| Field | Type | Description |
|---|---|---|
entityId | string (uuid) | Entity identifier — use it with the company terminal and watchlists. |
slug | string | Canonical public slug. |
name | string | Company display name. |
canonicalPath | string | Canonical public page path (e.g. /c/bentley-systems-inc). |
matchedBy | "sureshake_ticker" | "primary_ticker" | Which ticker field matched. |
{
"data": {
"entityId": "5210b6a3-5677-4bd9-8f8d-6e9dab011a28",
"slug": "bentley-systems-inc",
"name": "Bentley Systems, Incorporated",
"canonicalPath": "/c/bentley-systems-inc",
"matchedBy": "primary_ticker"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "No public company for ticker: NOPE-XYZ",
"traceId": "ZSb4fZMX7dfAgAKwTGzNT"
}
}Tickers are limited to 20 characters; longer values return 400 with code
FST_ERR_VALIDATION.
Get the Company Terminal
Retrieve SEC-EDGAR-derived public reference data for a public company: issuer identity (CIK, exchange, ticker), normalized financial statement periods, the filing history, and deterministic financial health signals.
The path parameter is the entity UUID — get it from the public profile
(entity.id) or the ticker resolver (data.entityId).
/v2/entities/:id/company-terminalcurl -H "Authorization: Bearer $TOKEN" \ "https://api.sureshake.com/v2/entities/5210b6a3-5677-4bd9-8f8d-6e9dab011a28/company-terminal"
const response = await fetch(
'https://api.sureshake.com/v2/entities/5210b6a3-5677-4bd9-8f8d-6e9dab011a28/company-terminal',
{ headers: { 'Authorization': `Bearer ${token}` } }, // optional
);
const { data } = await response.json();Anonymous requests receive the public-safe view (viewerScope: "public").
Sending a Privy bearer token upgrades the response to whichever view your
permissions allow (owner or admin) — the shape stays the same, but
permissioned sections unlock.
Every content section reports its own state, one of available,
partial, permissioned, locked, unavailable, or not_applicable.
Render what the server says is available; do not infer availability
client-side.
Response fields (data)
| Field | Type | Description |
|---|---|---|
entityId | string | Entity identifier. |
entityName | string | Company display name. |
entitySlug | string | Canonical public slug. |
profileMode | enum | public_reference | private_company | unclassified_company. |
viewerScope | enum | public | owner | admin — the view you received. |
identity | object | Issuer identity: primaryExchange, primaryTicker, sureshakeTicker, cik, secName, sic, sicDescription, fiscalYearEnd, issuerStatus, listingStatus, claimStatus, referenceLabel. |
summary | object | Headline metrics (revenue, operating income, …) with per-metric SEC source provenance, plus highlights and a dataQualityLabel. |
financialHealth | object | Deterministic health signals over SEC-filed facts: overallSignal (great | good | watch | risk | unavailable), per-dimension signals with grades and explanations. |
financials | object | Normalized financial statement periods (income statement, balance sheet, cash flow) with per-line taxonomy concepts. |
filings | object | SEC filing history rows (form, dates, accession number, document URLs) plus latestAnnualFiledAt / latestQuarterlyFiledAt. |
models | object | Model templates (e.g. DCF) with prefill availability. |
marketData | object | Delayed exchange quote when a market-data provider is configured: state (available | unavailable | not_configured) plus a quote (price, day change, 52-week range, beta, stale/delayed flags, provider attribution); quote is null outside available. |
transparencyLadder | object | The company's Sureshake transparency progression; not_applicable for unclaimed reference profiles. |
modules | array | Per-module render states for terminal UI sections. |
sources | array | Every upstream source used, with provider, URL, and access time. |
generatedAt | string | When this response was generated. |
disclaimer | string | Required attribution and non-advice disclaimer. |
{
"data": {
"entityId": "5210b6a3-5677-4bd9-8f8d-6e9dab011a28",
"entityName": "Bentley Systems, Incorporated",
"entitySlug": "bentley-systems-inc",
"profileMode": "public_reference",
"viewerScope": "public",
"identity": {
"companyMarketStatus": "public",
"primaryExchange": "NASDAQ",
"primaryTicker": "BSY",
"sureshakeTicker": null,
"cik": "0001031308",
"secName": "BENTLEY SYSTEMS INC",
"sic": "7372",
"sicDescription": "Services-Prepackaged Software",
"fiscalYearEnd": "1231",
"issuerStatus": "active",
"regulationCategory": "exchange_listed",
"isActiveOperatingCompany": true,
"listingStatus": "active",
"claimStatus": "unclaimed",
"referenceLabel": "SEC-sourced public reference · unclaimed"
},
"summary": {
"state": "available",
"asOf": "2026-03-31T00:00:00.000Z",
"metrics": [
{
"key": "revenue",
"label": "Revenue",
"state": "available",
"value": 424181000,
"displayValue": "$424.2M",
"unit": "USD",
"periodEnd": "2026-03-31T00:00:00.000Z",
"deltaDisplay": "+$53.6M",
"source": {
"kind": "regulator",
"provider": "SEC EDGAR companyfacts",
"label": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
"accessionNumber": "0001031308-26-000017",
"note": "10-Q · unit USD · frame CY2026Q1"
}
}
],
"highlights": [
"Profitable in the latest reported period",
"Positive derived free cash flow"
],
"dataQualityLabel": "94% canonical metric coverage"
},
"financialHealth": {
"state": "available",
"overallSignal": "good",
"headline": "Generally healthy filing-backed fundamentals",
"explanation": "Signals use deterministic thresholds over SEC-filed facts. They are descriptive, not a credit rating, audit opinion, price target, or investment recommendation.",
"signals": [
{
"key": "profitability",
"label": "Profit health",
"signal": "great",
"grade": "A",
"headline": "Profitable in the latest reported period",
"explanation": "Net margin was 22.5%.",
"metricKeys": ["revenue", "net_income", "net_margin"]
}
]
},
"financials": {
"state": "available",
"periods": [
{
"fiscalYear": 2026,
"fiscalPeriod": "Q1",
"baseForm": "10-Q",
"periodEnd": "2026-03-31T00:00:00.000Z",
"filedDate": "2026-05-07T00:00:00.000Z",
"currency": "USD",
"coveragePercent": 94,
"incomeStatement": [
{
"key": "revenue",
"label": "Revenue",
"displayValue": "$424.2M",
"value": 424181000,
"unit": "USD",
"sourceConcept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax"
}
],
"...": "balance sheet, cash flow, and 15 earlier periods elided"
}
],
"unavailableReason": null
},
"filings": {
"state": "available",
"latestAnnualFiledAt": "2026-02-26T00:00:00.000Z",
"latestQuarterlyFiledAt": "2026-05-07T00:00:00.000Z",
"rows": [
{
"form": "8-K",
"filingDate": "2026-05-26T00:00:00.000Z",
"accessionNumber": "0001104659-26-066280",
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1031308/000110465926066280/0001104659-26-066280-index.html",
"isAmendment": false,
"status": "active"
}
]
},
"marketData": {
"state": "not_configured",
"reason": "Live price, analyst targets, news, and exchange redistribution are disabled until a licensed market-data provider is configured."
},
"sources": [
{
"kind": "regulator",
"provider": "SEC EDGAR",
"label": "SEC company profile · CIK 0001031308",
"url": "https://www.sec.gov/edgar/browse/?CIK=0001031308&owner=exclude&action=getcompany",
"accessedAt": "2026-07-22T21:39:58.000Z"
}
],
"generatedAt": "2026-07-24T03:56:05.277Z",
"disclaimer": "Public-company information is derived from SEC EDGAR filings. Source filings control in the event of any discrepancy. Sureshake does not provide investment advice, audit assurance, live market data, or an issuer endorsement.",
"...": "models, transparencyLadder, and modules elided"
},
"meta": { "timestamp": "2026-07-24T03:56:05.277Z" }
}Company terminal data is derived from SEC EDGAR filings. Source filings
control in the event of any discrepancy. Sureshake does not provide investment
advice, audit assurance, live market data, or an issuer endorsement — surface
the disclaimer field wherever you display this data.
Get Full Financials (TTM + Fiscal Quarters)
Trailing-twelve-month and fiscal-quarter tables derived from SEC canonical
periods: income statement, balance sheet, and cash flow with derived EBITDA
and free cash flow. Flow items sum four consecutive quarters for TTM;
balance-sheet items are point-in-time. Fourth quarters that were never filed
separately are derived as fiscal year minus Q1–Q3 and flagged derivedQ4.
/v2/entities/:id/financials/fullcurl "https://api.sureshake.com/v2/entities/5210b6a3-5677-4bd9-8f8d-6e9dab011a28/financials/full"
const response = await fetch(
'https://api.sureshake.com/v2/entities/5210b6a3-5677-4bd9-8f8d-6e9dab011a28/financials/full',
);
const { data } = await response.json();data.ttm and data.quarters are arrays of columns, each with periodEnd,
fiscalPeriod, basis, derivedQ4, and grouped income, balanceSheet,
and cashFlow values (nullable where a filing fact is absent). The
human-readable view lives at www.sureshake.com/c/{slug}/financials.
Related pages
- Watchlist Endpoints — track companies with the star button and the watchlist API
- Directory Profile Endpoints — the public directory profile read models
- Understanding reference profiles