Vanegraph API
Send a web page, text or an AI conversation. Get back what it is about, whether it is safe for brands, and what the reader is trying to do. In labels ad platforms already understand, with a reason for each. No personal data, ever.
What you get
| Field | What it tells you |
|---|---|
topics | Up to three IAB Tech Lab Content Taxonomy 3.1 categories, most relevant first, with confidence. |
safety | A brand-safety tier (floor, high, medium, low, none) and the risk categories behind it, based on the industry Brand Safety Floor and Suitability Framework. News reporting is judged on treatment, not keywords. |
intent | The reader's stage (informational, commercial_investigation, transactional, navigational) and a commercial score from 0 to 1. |
language | ISO 639-1 code of the content. |
degraded | true if part of the analysis could not run. The part that failed falls back to a cautious default (for safety: medium). Degraded results are never cached. |
Classify a page
curl https://api.vanegraph.com/v1/classify \
-H "Authorization: Bearer $VANEGRAPH_KEY" \
-H "content-type: application/json" \
-d '{"url": "https://www.example.com/article"}'
We read pages as VanegraphBot, respect robots.txt and Content Signals (ai-input=no is honoured), and never store page body text. Results for a URL, including its title, are cached for 7 days.
Speed or accuracy
Add "mode": "fast" to any request for roughly twice the speed (about 2 seconds for a new page) at slightly lower accuracy on Polish topics. The default, "accurate", is the model behind our published benchmark. Every response carries a Server-Timing header with the time spent fetching, searching and classifying.
Classify text you already have
curl https://api.vanegraph.com/v1/classify \
-H "Authorization: Bearer $VANEGRAPH_KEY" \
-H "content-type: application/json" \
-d '{"title": "Nowe auta elektryczne 2027", "text": "Porównujemy zasięg i ceny..."}'
Classify an AI conversation
curl https://api.vanegraph.com/v1/classify/conversation \
-H "Authorization: Bearer $VANEGRAPH_KEY" \
-H "content-type: application/json" \
-d '{"messages": [
{"role": "user", "content": "Which electric car under 150k PLN has the best range?"},
{"role": "assistant", "content": "Here are three options and how they compare..."}
]}'
For ad networks inside AI apps: an independent rating of what the conversation is about, whether it is safe for brands, and the user's intent. Conversation text is never cached, stored or logged.
Response
{
"url": "https://www.example.com/article",
"title": "Nowe auta elektryczne 2027",
"topics": [
{ "id": "22", "name": "Green Vehicles", "path": ["Automotive", "Auto Type", "Green Vehicles"], "confidence": 0.71 }
],
"topics_reason": "Compares range and prices of new electric cars.",
"safety": { "tier": "none", "categories": [], "reason": "Neutral consumer content." },
"intent": { "stage": "commercial_investigation", "commercial_score": 0.72, "reason": "Reader is comparing models before buying." },
"language": "pl",
"model_version": "v0.1+...",
"degraded": false,
"cached": false
}
Taxonomy
All 704 categories, no key needed: https://api.vanegraph.com/v1/taxonomy
Pricing
Need more than the free tier, or a key? Email hello@vanegraph.com.
Errors
Every error has the same shape: {"error": {"code": "...", "message": "..."}}. Codes: unauthorized (401), quota_exceeded (429), invalid_request and invalid_url (400), robots_disallowed (403), too_large (413), unsupported_content (415), insufficient_content (422), fetch_failed (502). Failed requests do not count toward your quota.