Upvera for Developers
Value API

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/v1

Quick 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": { }
}
FieldMeaning
vAPI version. Fields are only ever added; a breaking change ships as /api/v2.
kindWhat data holds: startups, startup, series, receipt, index, me or deliveries.
as_ofWhen Upvera computed the numbers.
stateThe 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 limit60 requests per minute per IP, with X-RateLimit-* headers. A 429 carries Retry-After.
Cachepublic, max-age=30, s-maxage=60, stale-while-revalidate=300. Values move on an hourly grid.
CORSAny 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 the Authorization header, 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/me and /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