# Get a citation

Retrieve a saved verification record by its ID.

Documentation index: https://webcite.co/llms.txt
Canonical page: https://webcite.co/api-docs/citation
API origin: https://api.webcite.co
Authentication: x-api-key header. Keep keys on your server.

## When to use it

Use a saved citation record ID returned by the API. A citation record ID and a source URL identify different things.

## Stored identity and conclusions

Production rollout verified on 24 September 2026: the hosted API includes evidence policy 13 and the hosted MCP connector runs 1.9.0. This does not publish or upgrade the npm package installed by local clients. Inspect response metadata and the installed client version; saved responses retain their original policy and evidence time.

The saved `data` record exposes `id`, `thread_id`, `created_at`, and `metadata` when available. Read `metadata.final_response` for a retained conclusion. An absent legacy conclusion remains unavailable; do not regenerate one while displaying history. See [response structure](/api-docs/responses#saved-results) for historical array/object compatibility and MCP parsing.

## Request

GET /api/v1/citations/{id}

1 credit.

### curl

```curl
curl --fail-with-body -X GET 'https://api.webcite.co/api/v1/citations/YOUR_ID' \
  -H "x-api-key: $WEBCITE_API_KEY"
```

### Node.js

```javascript
const response = await fetch("https://api.webcite.co/api/v1/citations/YOUR_ID", {
  method: "GET",
  headers: {
    "x-api-key": process.env.WEBCITE_API_KEY,
  },
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());
```

### python

```python
import os
import requests

response = requests.get(
    "https://api.webcite.co/api/v1/citations/YOUR_ID",
    headers={"x-api-key": os.environ["WEBCITE_API_KEY"]},
    timeout=(10, 300),
)
response.raise_for_status()
print(response.json())
```

## Response

Returns the saved record and its available view data. A missing record returns 404.

## Errors

For 400, check the request fields and source identifiers. For 401, check your API key. For 429, wait for the retry interval. See the errors guide before retrying a billable request.

## OpenAPI operation

```json
{
  "path": "/api/v1/citations/{id}",
  "method": "GET",
  "operation": {
    "description": "Get the full details of a specific verification by its ID.\n\n**Cost: 1 credit.** This is a read of a result you already generated. No LLM calls.",
    "operationId": "ApiV1Controller_getCitation",
    "parameters": [
      {
        "description": "Citation ID",
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    ],
    "responses": {
      "200": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CitationViewResponseDto"
            }
          }
        },
        "description": "Citation retrieved"
      },
      "401": {
        "description": "Unauthorized - API key required"
      },
      "404": {
        "description": "Citation not found"
      }
    },
    "security": [
      {
        "x-api-key": []
      },
      {
        "bearer": []
      }
    ],
    "summary": "Get citation by ID",
    "tags": [
      "Public API"
    ]
  },
  "schemas": {
    "CitationViewResponseDto": {
      "properties": {
        "data": {
          "allOf": [
            {
              "$ref": "#/components/schemas/CitationViewDataDto"
            }
          ],
          "description": "Citation data"
        },
        "message": {
          "description": "Response message",
          "example": "Citation fetched successfully",
          "type": "string"
        },
        "statusCode": {
          "description": "HTTP status code",
          "example": 200,
          "type": "number"
        }
      },
      "required": [
        "statusCode",
        "message",
        "data"
      ],
      "type": "object"
    },
    "CitationViewDataDto": {
      "properties": {
        "citation": {
          "description": "Citation data (JSON string or array of CitationObject)",
          "example": "[{\"title\":\"Example Article\",\"url\":\"https://example.com/article\",\"snippet\":\"This is a snippet...\",\"id\":\"1\",\"author\":\"example\",\"status\":\"verified\",\"credibility_score\":95,\"rank\":1}]",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "$ref": "#/components/schemas/CitationDto"
              },
              "type": "array"
            }
          ]
        },
        "created_at": {
          "description": "Original record time",
          "format": "date-time",
          "type": "string"
        },
        "generated_prompts": {
          "description": "Array of generated sub-prompts when useMultiplePrompt was enabled",
          "example": [
            "What are the latest AI trends in 2024?",
            "What are emerging AI technologies?",
            "What are AI adoption trends in industry?"
          ],
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "id": {
          "description": "Stored citation identifier",
          "type": "string"
        },
        "metadata": {
          "description": "Historical metadata. final_response preserves the final result under evidence_policy_version 9; absent for legacy records.",
          "type": "object"
        },
        "prompt": {
          "description": "The original prompt that generated this citation",
          "example": "Latest trends in AI",
          "type": "string"
        },
        "thread_id": {
          "description": "Stored thread identifier, when present",
          "type": "string"
        }
      },
      "required": [
        "prompt",
        "citation"
      ],
      "type": "object"
    },
    "CitationDto": {
      "properties": {
        "author": {
          "description": "Author or domain name",
          "example": "example",
          "type": "string"
        },
        "credibility_basis": {
          "description": "Whether credibility_score rests on an actual measurement ('measured') or is a placeholder because no check has run yet ('unknown', e.g. no grounding signal or the citation has not been analysed). Absent means the same as \"measured\" for citations produced before this field existed.",
          "enum": [
            "measured",
            "heuristic",
            "unknown"
          ],
          "example": "measured",
          "type": "string"
        },
        "credibility_score": {
          "description": "Credibility/relevance score from 1-100 (higher = more credible/relevant/authoritative)",
          "example": 95,
          "type": "number"
        },
        "evidence": {
          "description": "Publisher evidence receipt v1: state, originalUrl, finalUrl, contentHash, retrievedAt, quoteMatch, typed publisher dates, retention, replayable and failureReason. Missing on legacy records means unknown provenance.",
          "type": "object"
        },
        "group_id": {
          "description": "Group ID for citations from the same domain",
          "example": "group-example-com",
          "type": "string"
        },
        "highlight_ranges": {
          "description": "Character ranges [start, end] in snippet that are most relevant to the claim",
          "example": [
            [
              10,
              25
            ],
            [
              40,
              55
            ]
          ],
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "id": {
          "description": "Unique citation identifier",
          "example": "1",
          "type": "string"
        },
        "is_group_primary": {
          "description": "Whether this is the primary (highest-ranked) citation from its domain group",
          "example": true,
          "type": "boolean"
        },
        "publication_year": {
          "description": "Publication year of the cited source",
          "example": 2024,
          "type": "number"
        },
        "rank": {
          "description": "Sequential rank (1, 2, 3...) where rank 1 is the highest/best citation, based on credibility_score and verified status",
          "example": 1,
          "type": "number"
        },
        "ranking_factors": {
          "allOf": [
            {
              "$ref": "#/components/schemas/RankingFactorsDto"
            }
          ],
          "description": "Breakdown of how the ranking score was calculated"
        },
        "snippet": {
          "description": "Relevant excerpt from the source",
          "example": "This is a snippet from the article...",
          "type": "string"
        },
        "source_metadata": {
          "allOf": [
            {
              "$ref": "#/components/schemas/SourceMetadataDto"
            }
          ],
          "description": "Additional metadata about the source"
        },
        "source_type": {
          "description": "Source type: Government Document, Dataset, Journal, Report, Trusted Media, Article, Reddit, Social Media",
          "enum": [
            "Government Document",
            "Dataset",
            "Journal",
            "Report",
            "Trusted Media",
            "Article",
            "Reddit",
            "Social Media"
          ],
          "example": "Article",
          "type": "string"
        },
        "stance": {
          "description": "Whether this citation supports or contradicts the claim (only with useEnhancedAnalysis)",
          "enum": [
            "supports",
            "contradicts",
            "partially_supports",
            "neutral",
            "inconclusive"
          ],
          "example": "supports",
          "type": "string"
        },
        "stance_confidence": {
          "description": "Confidence in the stance assessment (0-100)",
          "example": 90,
          "type": "number"
        },
        "stance_explanation": {
          "description": "Brief explanation of the stance determination",
          "example": "The source directly confirms the key claim with supporting data.",
          "type": "string"
        },
        "status": {
          "description": "Verification status of the citation",
          "example": "verified",
          "type": "string"
        },
        "title": {
          "description": "Title of the cited source",
          "example": "Example Article Title",
          "type": "string"
        },
        "url": {
          "description": "URL of the cited source",
          "example": "https://example.com/article",
          "type": "string"
        }
      },
      "required": [
        "title",
        "url",
        "snippet",
        "id",
        "author",
        "status",
        "credibility_score",
        "rank"
      ],
      "type": "object"
    },
    "RankingFactorsDto": {
      "properties": {
        "content_relevance": {
          "description": "How well the content matches the claim being verified (0-100).",
          "example": 85,
          "type": "number"
        },
        "recency": {
          "description": "Publication freshness score (0-100). Current year = 100, decreases with age.",
          "example": 100,
          "type": "number"
        },
        "source_authority": {
          "description": "Domain reputation score (0-100). Higher scores for government, academic, major news sources.",
          "example": 90,
          "type": "number"
        }
      },
      "required": [
        "source_authority",
        "content_relevance",
        "recency"
      ],
      "type": "object"
    },
    "SourceMetadataDto": {
      "properties": {
        "domain": {
          "description": "Extracted domain from URL",
          "example": "example.gov",
          "type": "string"
        },
        "domain_category": {
          "description": "Category of the source domain",
          "enum": [
            "government",
            "academic",
            "news",
            "organization",
            "encyclopedia",
            "social",
            "other"
          ],
          "example": "government",
          "type": "string"
        },
        "is_fact_check_site": {
          "description": "Whether this is a fact-checking website (snopes, politifact, etc.)",
          "example": false,
          "type": "boolean"
        },
        "is_primary_source": {
          "description": "Whether this is a primary source (government, official, press release)",
          "example": true,
          "type": "boolean"
        }
      },
      "required": [
        "domain",
        "domain_category",
        "is_primary_source",
        "is_fact_check_site"
      ],
      "type": "object"
    }
  }
}
```
