> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vidnavigator.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tweet Claim Analysis

> Understand what an X post actually means by combining the original tweet, quoted tweet, and attached media.

Most X APIs give you tweet text and metadata. That is useful for retrieval, but it often misses the actual message. On X, meaning is frequently split across the main tweet, the quoted tweet, and the media attached to one or both posts.

VidNavigator's Tweet Claim Analysis endpoint is built for that exact problem. It reconstructs intent across all of those layers and returns one structured intelligence object you can use in verification, monitoring, analytics, or AI workflows.

## What This Guide Helps You Do

By the end of this guide, you will know how to:

* decide when tweet claim analysis is the right tool
* send a valid `tweet_id`
* understand what the API reads before it writes a result
* use `final_statement`, `detailed_analysis`, and the classification axes correctly
* plug the result into fact-checking, social monitoring, or clustering workflows

## When to Use This Endpoint

Use tweet claim analysis when you care about what the author meant, not just what they typed.

Good fits:

* fact-checking and verification
* narrative tracking across many posts
* reputation and risk monitoring
* clustering similar claims into dashboards
* turning noisy social posts into structured AI-ready data

If you only need raw tweet text, engagement metrics, or basic metadata, this endpoint is probably more powerful than you need.

## Why This Is Different from Basic Tweet Retrieval

A normal tweet API can tell you:

* the tweet text
* the author
* the timestamp
* public metrics

This endpoint goes further. It:

* reads the original tweet
* checks whether a quoted tweet changes or completes the meaning
* analyzes media attached to the original tweet (videos are transcribed; images are described by a vision model)
* analyzes media attached to the quoted tweet
* returns one structured interpretation of the overall claim

That is the difference between collecting posts and extracting usable intelligence.

## What the API Actually Returns

<CardGroup cols={2}>
  <Card title="Final Claim" icon="message-question">
    `final_statement` is the normalized claim the author appears to be making after the full context is analyzed.
  </Card>

  <Card title="Detailed Analysis" icon="file-text">
    `detailed_analysis` explains the claim, context, evidence, and stance in plain language.
  </Card>

  <Card title="Topics & Entities" icon="tags">
    `topics` and `entities` surface the key subjects and named people/organizations/places for tagging and clustering.
  </Card>

  <Card title="Classification Axes" icon="chart-bar">
    `claim_type`, `intent`, `tone`, `emotion`, and `authority` classify the original tweet text on fixed taxonomies.
  </Card>
</CardGroup>

<Note>
  The classification axes are based on the original tweet text only. The broader fields such as `final_statement` and media summaries can reflect quoted content and attached media.
</Note>

## How It Works

1. You send a numeric `tweet_id`.
2. VidNavigator fetches the original tweet.
3. If the tweet quotes another post, VidNavigator fetches that too.
4. If either layer includes video or audio, VidNavigator retrieves transcripts or falls back to speech-to-text when needed. Attached images are described by a vision model.
5. The full context is analyzed and returned as a structured claim object.

This is especially useful when the visible text is vague, sarcastic, reactive, or incomplete without the quoted post or media evidence.

## Quickstart

The endpoint accepts a tweet ID, not a full URL.

For example, in:

`https://x.com/user/status/1912345678901234567`

the `tweet_id` is:

`1912345678901234567`

### Basic Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.vidnavigator.com/v1/tweet/statement" \
    -H "X-API-Key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "tweet_id": "1912345678901234567"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.vidnavigator.com/v1/tweet/statement",
      headers={
          "X-API-Key": "YOUR_API_KEY",
          "Content-Type": "application/json",
      },
      json={"tweet_id": "1912345678901234567"},
  )

  data = response.json()["data"]
  print(data["final_statement"])
  print(data["detailed_analysis"])
  print(data["claim_type"])
  ```
</CodeGroup>

## How to Read the Response

### `final_statement`

This is the field most teams care about first. It answers:

`What is this post really claiming once all context is taken into account?`

Use it for:

* human review
* case summaries
* analyst handoff
* verification-ready claim normalization (use it directly as a search/verification query)

### `detailed_analysis`

This is the explanation layer. It helps reviewers understand why the system interpreted the post the way it did.

### `topics` and `entities`

Use these for filtering, tagging, grouping, alerting, or analytics.

### Media summaries

`tweet_media_summary` and `quoted_media_summary` explain what the attached media contributed to the meaning, if media exists in either layer. For videos this is a transcript summary; for images it is a vision-model description (transcribed text, chart/graph data, recognizable people and logos, and any claims they make).

## Classification Axes

The endpoint returns five classification axes for the original tweet text:

* `claim_type`: what kind of post it is, such as `factual_claim`, `opinion`, or `news_sharing`
* `intent`: what the author seems to be trying to do, such as `inform`, `persuade`, or `challenge`
* `tone`: how the message is delivered, such as `serious`, `skeptical`, or `provocative`
* `emotion`: the dominant emotional signal, such as `urgency`, `outrage`, or `hope_inspiration`
* `authority`: what kind of backing the tweet appears to rely on, such as `data_driven`, `expert_led`, or `speculative`

These labels are useful for routing, analytics, prioritization, and moderation workflows.

## Common Workflows

### Fact-checking

Use `final_statement` as the normalized claim to verify — it doubles as a search query for reporting, source documents, or related video evidence.

### Reputation and crisis monitoring

Track emotionally charged posts, accusations, or fast-moving narratives. The combination of `claim_type`, `tone`, `emotion`, and media summaries gives you more signal than raw keyword alerts.

### Narrative clustering

Store `final_statement`, `topics`, and `entities` for every analyzed tweet. That makes it much easier to group similar claims even when the original wording differs.

### AI product integration

Feed the output into dashboards, RAG pipelines, search systems, or internal tools that need clean structured social intelligence instead of raw tweet text.

## Billing and Media Notes

Billing is **consolidated** — a single call may run several internal LLM calls (media extraction, image vision, and the main statement extraction) but produces just **one** `analysis_request` charge per request:

* a text-only tweet usually consumes `analysis_request` units only
* a tweet with attached media can also trigger `standard_request` or `residential_request` (per media URL fetched) and `transcription_hour` (if speech-to-text runs)
* a quoted tweet with its own media can add another layer of processing
* **image analysis is billed through the same `analysis_request` meter** (no separate meter)

Analysis Request billing is dynamic: 1 `analysis_request` unit covers up to 15,000 total tokens, and larger contexts use `ceil(total_tokens / 15000)` units.

In practice, this means some tweets are lightweight and some are multimodal analysis jobs. The endpoint handles that automatically, but it is useful to know why two tweets may not cost the same.

## Troubleshooting

### Invalid tweet ID

Send only the numeric ID. Do not send the full X URL.

### Missing media summaries

If no media exists, or the media could not be processed, `tweet_media_summary` and `quoted_media_summary` may be `null`.

### Unexpected classification

Remember that the five classification axes are based on the original tweet text only, while `final_statement` reflects the broader contextual interpretation.

### Upstream fetch issues

If X content cannot be fetched or parsed upstream, the endpoint may return an error such as `502`.

## Next Steps

* [Tweet Claim Analysis API reference](/api-reference/endpoint/tweet-claim-analysis)
* [Extract structured data from videos](/guides/data-extraction)
