Sense Street · Authentication Profile
Sense Street Authentication
Authentication
Sense Street secures its APIs with http across 2 declared security schemes, as derived from its OpenAPI definitions.
CompanyCapital MarketsTradingArtificial IntelligenceFintechConversation IntelligenceOTCMarket DataNatural Language ProcessingCommoditiesFixed Income
Methods: http
Schemes: 2
OAuth flows:
API key in: header
Security Schemes
BearerJWT http
scheme: bearer
· in: header ()
XKeyPublicKey apiKey
· in: header ()
Source
Authentication Profile
generated: '2026-08-14'
method: derived
source: >-
src/sensestreet/auth_header_builder.py in the first-party PyPI package
`sensestreet` 1.0.16 (published 2025-10-07), plus the published description of
https://docs.sensestreet.com/authentication
docs: https://docs.sensestreet.com/authentication
docs_gated: true
summary:
types: [http]
scheme: bearer
bearer_format: JWT
signing_algorithm: RS256
key_model: client-held RSA key pair, public key registered with Sense Street
api_key_in: [header]
oauth2_flows: []
note: >-
Sense Street does NOT run OAuth 2.0 or OIDC. There is no authorization
server, no /.well-known/openid-configuration, and no scope surface — so this
repo carries no scopes/ artifact. Authentication is a client-signed JWT
bearer assertion: the customer generates an RSA key pair, registers the
public key with Sense Street, and the SDK mints a short-lived RS256 JWT
locally for every request. That is a self-issued assertion model, not a
token-grant model.
schemes:
- name: BearerJWT
type: http
scheme: bearer
bearerFormat: JWT
algorithm: RS256
in: header
header: Authorization
value_format: 'Bearer <RS256 JWT signed with the client private key>'
token_lifetime_seconds: 900
not_before_skew_seconds: -300
claims:
- {claim: exp, meaning: expiry, value: now + 15 minutes}
- {claim: nbf, meaning: not before, value: now - 5 minutes}
- {claim: aud, meaning: audience, value: api.sensestreet.com}
- {claim: application_id, meaning: the customer app id issued by Sense Street}
- {claim: public_key_id, meaning: identifies which registered public key signed this, default 'default.pub'}
- {claim: server_id, meaning: target server identifier, default 'default'}
- {claim: server_role, meaning: target server role, default 'default'}
source: packages/sense-street-packages.yml
- name: XKeyPublicKey
type: apiKey
in: header
header: X-key
value_format: PEM-encoded RSA public key
required: false
description: >-
The client's RSA PUBLIC key is sent verbatim in the X-key header alongside
the signed bearer token, so the server can verify the assertion without a
prior key exchange for that request. Sending a public key is not a secret
disclosure.
source: packages/sense-street-packages.yml
network_controls:
- control: vpn
description: >-
"Enterprise API access is secured with VPN connectivity" — published on the
Sense Street authentication docs page description.
source: https://docs.sensestreet.com/authentication
- control: ip-allowlisting
description: >-
Static source IPs are allowlisted per customer; the implementation page
states integration requires "secure API integration with static IPs and
authentication".
source: https://docs.sensestreet.com/implementation-data-requirements
- control: edge-auth-gate
description: >-
Observed live: every path under /api/ on portal.sensestreet.com returns
HTTP 401 with the plain-text body "Invalid or missing token", including
/api/v1/openapi.json, /api/v1/docs and /api/v1/redoc. The gate is applied at
the nginx edge ahead of the application, so unauthenticated callers cannot
enumerate the surface.
source: probed 2026-08-14
always_sent_headers:
- {header: Authorization, note: only when a private key is configured}
- {header: X-key, note: PEM public key, only when a public key path is configured}
- {header: X-client-version, note: SDK version string, e.g. 1.0.16}
- {header: Date, note: 'client local timestamp, format MM/DD/YYYY, HH:MM:SS'}
- {header: Content-Type, note: application/json except on multipart file uploads}
dashboard_authentication:
method: sso
description: >-
The Sense Street dashboard (portal.sensestreet.com) is separate from the API
and uses Single Sign-On with role-based access control and MFA. Google
Identity Services is loaded on the portal login page.
source: https://docs.sensestreet.com/dashboard-authentication
x-evidence:
- url: https://pypi.org/pypi/sensestreet/json
status: 200
- url: https://docs.sensestreet.com/authentication
status: 200
note: page renders, body content requires sign-in; the published meta description is the readable part
- url: https://portal.sensestreet.com/api/v1/ping
status: 401
note: 'body "Invalid or missing token"'
Work with this as data
Every security artifact here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/sense-street-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.