The VRA API returns a single grade — A through F — and the underlying signals for any audience segment in the registry, or for any audience you score privately. Free for buyers, free for sellers, and the response is identical to what you can replicate from the methodology.
$ curl https://api.verifiedaudiences.com/v1/score \ -H 'Authorization: Bearer $VRA_KEY' \ -H 'Content-Type: application/json' \ -d '{"segment_id": "liveramp.auto_intender.us"}' # → 200 OK { "segment_id": "liveramp.auto_intender.us", "grade": "A", "composite": 98.4, "signals": { // primary · 40% "ip_fanout": 1.4, "non_residential": 0.012, "privacy_relay": 0.004, "freshness_days": 7, "geo_precision_miles": 0.42 }, "methodology": "v3.1", "reviewed_at": "2026-04-22T14:22:00Z" }
Look up a segment, score one (or upload your own), and subscribe to grade changes. Same payload across all three. Anything you can do in the dashboard, you can do with one HTTP call.
Returns the current grade, composite, signals, and 90-day trend for any segment in the public registry. Unauthenticated, unmetered — try it from your terminal right now.
Pass a segment_id to score a registry entry, or upload a hashed match-file to score your own audience. Same response schema either way.
Signed POST to your endpoint within 30 seconds of any grade change for segments you subscribe to. Old grade, new grade, the signal that triggered it, and a re-validatable signature.
No SDK to install at launch — just standard HTTP and JSON. The free Developer tier is enough to prototype, evaluate, and ship a side project. Production volumes get a metered tier when public launch ships in Q3.
$ curl -X POST https://api.verifiedaudiences.com/v1/score \ -H "Authorization: Bearer $VRA_KEY" \ -H "Content-Type: application/json" \ -d '{"segment_id": "experian.mosaic.established_hh"}'
// Node 18+ (built-in fetch) const res = await fetch("https://api.verifiedaudiences.com/v1/score", { method: "POST", headers: { "Authorization": `Bearer ${process.env.VRA_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ segment_id: "experian.mosaic.established_hh" }), }); const { grade, composite, signals } = await res.json(); console.log(`Grade: ${grade} (${composite})`); // → Grade: A (96.1)
import os, requests r = requests.post( "https://api.verifiedaudiences.com/v1/score", headers={"Authorization": f"Bearer {os.environ['VRA_KEY']}"}, json={"segment_id": "openap.cpg_hh.nlsn"}, timeout=2.0, ) data = r.json() print(f"Grade: {data['grade']} ({data['composite']})") # → Grade: B (87.2)
package main import ( "bytes" "encoding/json" "net/http" "os" ) type Score struct { Grade string `json:"grade"` Composite float64 `json:"composite"` } func Score(id string) (*Score, error) { body, _ := json.Marshal(map[string]string{"segment_id": id}) req, _ := http.NewRequest("POST", "https://api.verifiedaudiences.com/v1/score", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+os.Getenv("VRA_KEY")) res, err := http.DefaultClient.Do(req) if err != nil { return nil, err } defer res.Body.Close() s := &Score{} json.NewDecoder(res.Body).Decode(s) return s, nil }
POST /your-endpoint X-VRA-Signature: v1=... { "event": "grade_change", "segment_id": "lotame.auto_2554", "old_grade": "B", "new_grade": "C", "trigger": "ip_fanout > 4.0 (proxy contamination)", "changed_at": "2026-04-15T11:02:18Z" }
$ npm install @vra/audit-client $ vra audit \ --input ./your-ips.csv \ --segment "my-audience" # Local OPRF · IPs never leave your VPC # → grade: B composite: 84.6 matched: 962,431
Whether you score a known segment, upload a match-file, or look up the registry, you get the same fields back. Methodology version is always tagged so you know exactly which v3.x pipeline produced the result.
{
"segment_id": "liveramp.auto_intender.us",
"grade": "A",
"composite": 98.4,
"signals": {
// primary · 40%
"ip_fanout": 1.4,
"non_residential": 0.012,
"privacy_relay": 0.004,
"freshness_days": 7,
"geo_precision_miles": 0.42
},
"trend_90d": "+1 grade",
"methodology": "v3.1",
"reviewed_at": "2026-04-22T14:22:00Z"
}
Charter beta keys are issued by invite during pre-launch. At public launch in Q3 2026, the Developer tier is open to anyone — buyers and sellers alike — with monthly free scored requests, full payload, and webhooks. Same methodology across every tier; what changes is volume and SLA.
Tell us which side of the trade you're on and we'll send a beta key, the v3.1 methodology working draft, and a sandbox workspace with deterministic fixtures. Reply within one business day.