What Does an AI Rank API Citation Actually Prove?

By Anurag Pathak, Founder of Serpent API·

An AI Rank citation proves that a link appeared in a particular Serpent API response. It does not, by itself, show that the linked page supports the answer, that a brand was named, or that the brand was recommended. Save the exact URL and answer context, then review the page before making a report claim.

I founded Serpent API, so this review of its citation fields is affiliated. On October 5, 2026, I checked the public AI Rank contract. The example is illustrative and has no authenticated live response or page review behind it. The companion audit covers repeated queries and score comparability.

Read the citation object before writing a finding

The documented citation keys are position, url, url_normalized, domain, title and cited_text. The normalized URL is for comparison; keep the original URL as exact evidence. cited_text is up to about 250 characters of the returned answer around the citation marker, not an excerpt from the linked page.

FieldQuestion it helps answerCaution
urlWhich link did this result cite?It may redirect or change later.
url_normalizedDid two rows cite effectively the same link?Retain original URL too.
cited_textWhat answer claim surrounded the marker?Not page text; do not quote it as such.
target_match_typeExact domain or subdomain match?A match says nothing about sentiment.
response_textWas the brand named or endorsed in context?A human must read it.

Build a citation-review record from the response

This single-label example records the requested domain, the returned answer, each citation and the match fields. It leaves page_checked false until a reviewer opens the link. The output is deliberately a review queue rather than a final visibility claim.

Install requests with python -m pip install requests and set SERPENT_API_KEY before running this illustrative script.

import json, os
from datetime import datetime, timezone
import requests

params = {"q": "best project planning tools for a small team",
          "domain": "example.com", "country": "us", "language": "en"}
r = requests.get("https://apiserpent.com/api/ai/rank/claude",
    params=params, headers={"X-API-Key": os.environ["SERPENT_API_KEY"]},
    timeout=90)
r.raise_for_status()
data = r.json()
if data.get("success") is not True: raise ValueError("No usable AI Rank answer")
result = data.get("results", {}).get("claude")
if not isinstance(result, dict): raise ValueError("Missing selected label result")
answer, rows = result.get("response_text"), result.get("citations")
if result.get("error") or not isinstance(answer, str) or not answer.strip() or not isinstance(rows, list):
    raise ValueError("Selected label did not return a usable answer")
review = [{"position": c.get("position"), "url": c.get("url"),
           "compare_key": c.get("url_normalized"),
           "domain": c.get("domain"), "title": c.get("title"),
           "answer_excerpt": c.get("cited_text"),
           "page_checked": False, "page_checked_at": None,
           "supports_answer_claim": None}
          for c in rows if isinstance(c, dict)]
print(json.dumps({"observed_at": datetime.now(timezone.utc).isoformat(),
    "run_id": data.get("run_id"), "query": params["q"],
    "target_domain": params["domain"], "api_label": "claude",
    "answer": answer, "target_found": result.get("target_found"),
    "target_match_type": result.get("target_match_type"),
    "citations": review}, indent=2))

Illustrative queue item: {"url":"https://publisher.example/guide","answer_excerpt":"Example answer context","page_checked":false,"supports_answer_claim":null}. No actual page or answer was reviewed for that fictional item. A reviewer should add the page access date, page title, any redirect, and whether the page supports the specific answer claim.

Apply a three-step human review

  1. Confirm that the returned URL resolves to the intended page. Preserve the original link and any redirect destination; use url_normalized only as a comparison key.
  2. Read the full response_text around the citation marker. Decide whether the link supports a factual claim, is merely background, or is unrelated.
  3. Open the page and record whether its content supports that claim. Separately label any brand mention and any contextual recommendation. A domain match alone supports only “cited.”

Know what the alternative evidence can tell you

Evidence routeWhat it establishesUnit or limitation
Serpent AI Rank citation fieldsCitations and answer context returned by this API callSingle-label Default $20/1,000; combined Default $40/1,000 calls.
Google Search Central AI guidanceOfficial guidance about Google’s AI search featuresNot a feed of these Serpent citation objects.
Manual page and interface reviewWhat a reviewer saw at a dated page or interfaceTime-consuming and variable; document the exact context.

A 100-query single-label review uses 100 calls. At Serpent Default AI Rank pricing of $20/1,000, listed API usage is $2.00; page review time is separate. If you need two or more labels in one call, the combined category is $40/1,000 Default rather than a sum of single-label prices. Do not compare visibility scores across different selected-label sets; the documented maximum varies by subset.

Give every citation a review outcome

Reviewers need a controlled outcome, not a single yes/no flag. Store supports_claim, background_only, contradicts_claim, unavailable or unresolved with the exact claim being checked. A page can support one sentence and fail to support the next. Record the date checked and the page title or redirect destination because a URL may later change. Preserve the returned cited_text separately from any quotation copied from the page.

  1. Identify the answer claim. Read the full returned answer and mark the sentence that the citation appears to accompany. If the marker is ambiguous, record that uncertainty.
  2. Check the page. Open the exact returned URL, follow a redirect only while retaining the original, and look for the cited claim on the page. An inaccessible page is unverified, not false.
  3. Decide what to publish. A verified link can be reported as a citation. Calling it a brand recommendation requires separate answer-language evidence. Escalate contradictory or unresolved cases to a human reviewer.

A report template is: “For [query] in the Serpent API response labeled [label] observed on [date], [number] returned links were checked; [page-review outcome], while [answer-language finding].” Fill it only after the response and linked pages have actually been reviewed. For a rate, disclose reviewed links, unreviewed links and completed responses separately; those are different denominators.

What should the final report say?

A good sentence names the dated Serpent API query and label, gives the cited URL, and describes what the returned answer said around it. It identifies the number of reviewed links and flags unresolved pages. Avoid a “citation rate” until you have a defined prompt set, repeated runs, parsed outcomes and a documented denominator. This article contains no such measured rate.

For a broader starting point, see the AI Rank API overview; the AI search visibility metrics guide covers a related task.

Report citations with their context

Keep the exact returned link and answer excerpt, then review the cited page and claim before publishing a finding.

Get an API key

Try the playground · Read the API reference

FAQ

What is cited_text in Serpent AI Rank?

It is a short excerpt of response_text around a citation marker. It is not a quotation from the page at the cited URL. Open the page separately for page-content claims.

Should I compare on url or url_normalized?

Keep url as the exact returned evidence and use url_normalized for comparison across rows. It removes common tracking parameters, www and trailing-slash differences under the public contract.

Does target_found prove a recommendation?

No. It marks an exact or subdomain citation match for the requested domain. The answer text and citation context must be reviewed before making a recommendation claim.

What does a zero visibility score mean?

With a domain supplied and a completed response, 0 means the target was not cited in the selected results. Null means no domain was supplied. Always retain the selected labels and response state with the score.

Related Posts