Upvera Value API
A read-only API for Upvera Value: every startup's value, its series, the receipt that explains each change, and the Upvera Index. Values come from the server exactly as they are shown on app.upvera.co/value. Nothing in the API is a price quote or an offer.
text
https://app.upvera.co/api/v1Quick start
bash
curl -s https://app.upvera.co/api/v1/startups/upvera-mthgaif7 | jq '.data | {name, rank, value, changes}'bash
curl -s "https://app.upvera.co/api/v1/startups?window=7d" | jq '.data[0:3] | map({name, rank, value})'The envelope
Every response has the same shape, so one parser handles them all.
json
{
"v": "upvera/api/v1",
"kind": "startup",
"as_of": "2026-10-20T09:00:00Z",
"state": "v3",
"data": { }
}| Field | Meaning |
|---|---|
v | API version. Fields are only ever added; a breaking change ships as /api/v2. |
kind | What data holds: startups, startup, series, receipt, index, me or deliveries. |
as_of | When Upvera computed the numbers. |
state | The value method in force: v3 is Value Engine 3.0. |
Errors use { "v": "upvera/api/v1", "error": { "code", "message" } } with one of bad_request, unauthorized, plan_required, not_found, rate_limited or unavailable.
Without a key
Public reads need no key.
| Rate limit | 60 requests per minute per IP, with X-RateLimit-* headers. A 429 carries Retry-After. |
| Cache | public, max-age=30, s-maxage=60, stale-while-revalidate=300. Values move on an hourly grid. |
| CORS | Any origin, so you can call it from a browser. |
With a key
Keys are part of the Scale plan. Create one in Upvera under Connections › Value API.
bash
curl -s https://app.upvera.co/api/v1/me \
-H "Authorization: Bearer $UPVERA_API_KEY"- Keys start with
upv_live_. Send them only in theAuthorizationheader, only from your server. A key in the URL is rejected, and browsers cannot send the header. - 600 requests per minute per key. Keyed responses are private and never shared-cached.
- Keys open
/api/v1/meand/api/v1/me/deliveries, and webhooks. - Rotate a key and the old one keeps working for 24 hours. Revoke it and it stops at once.
Show numbers honestly
- Show the number Upvera returns. Never recompute a value or a percentage on your side.
- When you explain a change, use the receipt (
/startups/{slug}/receipt): each row is one reason, with its exact integer in millionths. - Link back to the startup's value page (
urls.value) so readers can check it.
Every endpoint and field is on the Reference page, and the machine-readable OpenAPI document is the same source.
Updated 2026-10-19