Available Endpoints
This page lists all endpoints that support API key authentication. Most endpoints use your property API key; the AIVPS endpoints below use your organization API key. For interactive documentation and testing, visit the API Reference.
The API Reference shows all endpoints, but only the ones listed below support external API key access. Other endpoints are for internal application use only.
AI Placement Value Score (AIVPS)
Programmatically score one or more publisher domains against the AI Placement Value Score (AIVPS) layers — organic authority, AI citation accessibility, and AI training influence. Use this to rank placement opportunities, monitor AI-era authority of partner and competitor domains, and feed SEO/PR workflows that already track traditional authority metrics.
These endpoints use an organization-level API key, not your property API key. The two are not interchangeable. Generate a key under Organization Settings → API Key. A single organization key authorizes AIVPS scoring across every domain your organization queries.
Score Publishers
Compute the full AIVPS for one or more publisher domains. If the domain is unknown to Spyglasses, a publisher record is auto-created and enriched asynchronously in the background — the first call may return "confidence": "estimated" while enrichment finishes.
Headers:
x-api-key: Your organization's AIVPS API key (required)Content-Type: application/json
Body (primary use case — score a batch against a brand):
domain(string) ordomains(array, 1–25) — supply exactly one. Domains are normalized (protocol/www/trailing slash stripped).brandContext.propertyId(optional) — must reference a Property owned by the authenticated organization. Enables category-relevance scoring and AI training influence uplift. Omit if you don't have brand context.baseline(optional) — enables Bring-Your-Own-Baseline mode. See below.
Response:
If any individual domain fails (for example, a missing baseline value in BYOB mode), that domain appears in errors[] and the rest of the batch still succeeds.
Score Publishers with Bring-Your-Own-Baseline (BYOB)
If your team already tracks organic authority with Ahrefs DR, Moz DA, SEMrush AS, Majestic TF, or a custom score, you can supply that baseline and have Spyglasses apply only the AI layers on top. The response's aipvsByob.compositeScore is computed as normalizedBaseline × aiImpactMultiplier.
Body:
baseline.source— one ofahrefs_dr,moz_da,semrush_as,majestic_tf,dataforseo,custom.baseline.values— map of domain → baseline value. Must contain an entry for every domain you pass in.baseline.customMin/customMax— required whensourceiscustom; values are linearly rescaled to 0–100.
Response (adds an aipvsByob block per result; standard aipvs is still included for reference):
Get AI Impact Multiplier
Returns just the raw AI impact multiplier (0.40–1.00) plus the ACA and ATI layers for one or more domains. Use this when you want to combine Spyglasses' AI layers with a baseline you compute yourself at call time — the most portable form of the AIVPS signal.
Headers:
x-api-key: Your organization's AIVPS API key (required)Content-Type: application/json
Body:
Response:
AI Placement Quality Score (PQS)
Programmatically score placements against the AI Placement Quality Score factors — document position, chunk containment, placement type, editorial control, link attribute, and sentiment multiplier. When a publisher domain is supplied, the response also includes the publisher's AIPVS and a combined Total Placement Value (AIPVS × PQS / 100).
The PQS API supports both scoring modes:
- Prospective (synchronous) — score a hypothetical placement from user-supplied inputs. Returns the full score in the POST response.
- Retrospective (async, polling) — score an existing placement at a live URL. The POST creates a placement and enqueues the background job; the client polls a GET endpoint for the result.
All PQS endpoints use an organization-level API key, the same key used for the AIVPS endpoints above. Generate one under Organization Settings → API Key.
Score a Prospective Placement
Compute the PQS for a hypothetical placement given its scoring inputs. Use this to rank placement offers, run "what-if" scenarios before negotiating, or integrate PQS into your own media planning tools.
Headers:
x-api-key: Your organization's API key (required)Content-Type: application/json
Body:
placementType(required) — one ofdedicated_article,roundup_top,roundup_top_third,roundup_middle_third,roundup_bottom_third,passing_mention,sidebar_widget_biobox,quote_onlyeditorialControl(required) — one offull_authorship,collaborative,quoted,mentioned,unpredictablelinkAttribute(required) — one ofdofollow,nofollow,sponsored,ugc,no_linkassumedPosition(optional, default0.15) — the fraction of the document (0.0–1.0) where you expect the brand mention to land.0.05= first 10%,0.5= middle,0.95= footer.publisherDomain(optional) — when supplied, the publisher's AIPVS is computed and combined with the PQS for a Total Placement Value.brandContext.propertyId(optional) — must reference a Property owned by the authenticated organization. Narrows AIPVS category relevance and training influence uplift.
Response:
Notes:
pqs.subScores.chunkis always0.7for prospective placements. Actual chunk containment can only be computed from real content, so the API treats prospective placements as "partial" containment by default. Retrospective scoring (via the web UI) computes the real value.pqs.sentimentMultiplieris always1.0for prospective placements. Sentiment analysis requires real content around the mention.aipvsandtotalPlacementValuearenullwhenpublisherDomainis omitted or the AIPVS lookup fails.pqs.effectiveWeightsmatchesdefaultWeightsin prospective mode. Retrospective mode (web UI only) redistributes the editorial weight proportionally across the other four signals.
Example — run a lift preview: Fire several requests with the same publisher and editorial control but different placement positions / link attributes to quantify how much better terms would be worth. This is exactly what the "What if you negotiated better terms?" panel in the web UI does.
Score a Retrospective Placement (asynchronous)
Score an existing placement at a live URL. Spyglasses fetches the page, locates the brand mention (using the property's name and aliases), auto-detects the link attribute, classifies placement type and sentiment with an AI model, and computes the PQS. The pipeline typically takes 15–30 seconds and runs as a background job, so this endpoint returns a placement ID immediately — you poll for the result.
Headers:
x-api-key: Your organization's API key (required)Content-Type: application/json
Body:
url(required) — the live URL to score. Must be publicly accessible.propertyId(required) — the Property whose brand name and aliases should be used to locate the mention in the content. Must belong to the authenticated organization.title(optional) — a human-readable label for the placement. Auto-extracted from the page's<title>/og:title/h1if omitted.placementType/editorialControl/linkAttribute(optional) — all three are auto-detected from the page during scoring. Only supply them if you want to override the auto-detection.
Response (HTTP 202):
The returned id is the placement's unique identifier. Use it with the polling endpoint below.
Poll a Placement's Status and Result
Fetch the current state of a placement created via the retrospective endpoint (or any placement owned by the authenticated organization). Poll at roughly 3-second intervals until status is completed or failed.
Headers:
x-api-key: Your organization's API key (required)
Response while scoring is still in progress (HTTP 200):
statusis eitherpending(queued, not yet running) orrunning(actively being scored).- Keep polling until
statuschanges tocompletedorfailed.
Response when scoring has completed (HTTP 200):
Notes:
- In retrospective mode, the editorial weight is redistributed proportionally across the other four signals (
effectiveWeights.editorial= 0) because the editorial decision has already been made. ThedefaultWeightsfield shows the original distribution for reference. pqs.inputsreflects the auto-detected values after scoring, not necessarily what you passed in the create request. If the scorer detected a different link attribute or placement type, those take precedence.pqs.brandMentionshows which alias matched and where it was located in the tokenized content.keyMessagePullThrough.matchesis always one entry per configured key message (even below-threshold "closest match" entries); thematchedflag indicates whether each crossed the threshold.totalPlacementValueisnullwhen the publisher couldn't be looked up or hasn't been enriched yet.
Response when scoring has failed (HTTP 200):
Common failure modes:
- "No brand mention found in content" — the scorer couldn't locate any occurrence of the Property's name or aliases in the page. Check the URL is correct and add the exact form of the brand name used in the article to the Property's aliases.
- "The URL returned 404 — check that it's correct and publicly accessible." — the page no longer exists or isn't publicly available.
- "The URL returned 403 — the site is blocking our crawler." — the site is blocking the Spyglasses fetcher via WAF or bot protection. Try a different page on the same site.
- "Could not extract readable content from the page." — the page is JavaScript-rendered, paywalled, or has an unusual layout that prevents content extraction.
Polling example (JavaScript):
Property Information
Get Property Details
Retrieve information about your property using your API key.
Headers:
x-api-key: Your API key (required)
Response:
AI Visibility Rankings
Get AI Visibility Rankings
Retrieve prioritized grounding search opportunities from your most recent AI report.
Headers:
x-api-key: Your API key (required)
Parameters:
propertyId: Your property ID (from/api/me)
Historical Metrics
Get Brand Consistency History
Retrieve brand consistency score trends over time.
Headers:
x-api-key: Your API key (required)
Parameters:
id: Your property ID
Get Discovery Metrics History
Retrieve discovery query performance trends over time.
Headers:
x-api-key: Your API key (required)
Parameters:
id: Your property ID
Get Grounding Search Metrics History
Retrieve grounding search ranking trends over time.
Headers:
x-api-key: Your API key (required)
Parameters:
id: Your property ID
Query Parameters:
onlyGaps: Set to"true"to filter to gap opportunities only
Get Competitor Share of Voice
Retrieve share of voice data for competitors from your most recent AI report.
Headers:
x-api-key: Your API key (required)
Parameters:
id: Your property ID
Get AI Visibility Rankings (Alternative)
Alternative endpoint for AI visibility rankings data.
Headers:
x-api-key: Your API key (required)
Parameters:
id: Your property ID
AI Traffic Analytics
Get AI Timeline with Trends
Retrieve AI traffic timeline data with comparison to previous period.
Headers:
x-api-key: Your API key (required)Content-Type: application/json
Body:
Get AI Conversion Metrics
Retrieve AI conversion metrics showing bot visits vs human visits.
Headers:
x-api-key: Your API key (required)Content-Type: application/json
Body:
Get AI Traffic Summary
Retrieve AI traffic summary with breakdowns by category and referrer.
Get AI Traffic Timeline
Retrieve AI traffic timeline data for charts.
Get AI Traffic Timeline by Intent
Retrieve AI traffic timeline segmented by page intent.
Get AI Overview Visits
Retrieve visits from Google AI Overviews, Featured Snippets, and People Also Ask.
Get Bot Types
Retrieve list of AI visitor bot types for filtering.
Agent Analytics
Get Agent Data by Category
Retrieve analytics data for agents grouped by category.
Headers:
x-api-key: Your API key (required)Content-Type: application/json
Body:
Get Agent Data by Subcategory
Retrieve analytics data for agents grouped by subcategory.
Get Agent Data by Bot Type
Retrieve analytics data for agents grouped by bot type.
Get Agent Data by Location
Retrieve analytics data for agents grouped by location.
Get Agent Data by Pages
Retrieve analytics data for agents grouped by page path.
Get Live Agent Data
Retrieve real-time agent data for a property.
Get Blocked Requests Statistics
Retrieve statistics about blocked vs allowed requests.
Recrawl Analytics
Get Site Recrawl Summary
Retrieve site-wide recrawl frequency statistics.
Headers:
x-api-key: Your API key (required)Content-Type: application/json
Body:
Get Page Recrawl Frequency
Retrieve recrawl frequency statistics for each page.
Get Bot Recrawl Frequency
Retrieve recrawl frequency statistics for each crawler bot.
Get Bot Page Recrawl Frequency
Retrieve recrawl frequency for pages crawled by a specific bot.
Internal-Only Endpoints
The API Reference shows additional endpoints that are for internal application use only. These endpoints use session-based authentication and are not supported for external API access.
If you need access to data not available through the endpoints listed above, please contact us to discuss your requirements.