---
title: "Real X posts about a token for a period"
method: GET
path: "/v2/social/assets/{chain_id}/{address}/x-highlights"
tags: ["Social Community"]
---

# Real X posts about a token for a period

`GET /v2/social/assets/{chain_id}/{address}/x-highlights`

## Request

- Base URL: `https://api.arbital.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.arbital.xyz/v2/social/assets/{chain_id}/{address}/x-highlights`
- Auth: HTTP bearer

Authenticated list of real X posts about the token, newest first, collected once for all users through the reviewed TwitterAPI.io search provider for the current top trending tokens. Each post carries its author, link, publication time, available engagement, and the match evidence: the exact contract address, or the cashtag together with the token name (a ticker alone never counts). labels hold relevance labels with their evidence once a label model is adopted and are empty until then. coverage reports whether the token is followed and when it was last collected, so an empty list is never mistaken for no discussion. period defaults to 24h; limit defaults to 20 (max 50). Private/no-store; shares the asset comment read budget.

## Path parameters

- `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
- `address` string, required

## Query parameters

- `period` '5m' | '1h' | '4h' | '24h'
- `limit` integer

## Response `200`

Stored X posts for the token in the period with collection coverage

- SocialTokenXHighlights
  - `asset` object, required
    - `address` string, required
    - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
  - `coverage` object, required: not_followed: the token is not an X collection subject; pending: a subject with no successful collection yet; collected: at least one successful collection. Coverage and posts come from the indexer's shared X collection.
    - `last_collected_at_ms` string, nullable, required
    - `last_outcome` 'success' | 'rate_limited' | 'permanent_error' | 'transient_error' | 'budget_exhausted' | 'provider_invalid' | 'claim_lost' | 'null', nullable, required
    - `state` 'not_followed' | 'pending' | 'collected', required
  - `period` SocialRecapPeriod, required
    - `key` '5m' | '1h' | '4h' | '24h', required
    - `from_ms` string, required
    - `to_ms` string, required
  - `posts` SocialXHighlight[], required
    - `author` SocialXPostAuthor, required
      - `avatar_url` string, nullable, required
      - `display_name` string, nullable, required
      - `id` string, nullable, required: Provider account id when supplied.
      - `username` string, required
      - `verified` boolean, required: Provider verification flag as observed at collection time.
    - `conversation_id` string, nullable, required
    - `engagement` SocialXPostEngagement, required: Engagement counts as observed at the latest collection; null when the provider omitted a count.
      - `bookmarks` integer, nullable, required
      - `likes` integer, nullable, required
      - `quotes` integer, nullable, required
      - `replies` integer, nullable, required
      - `reposts` integer, nullable, required
      - `views` integer, nullable, required
    - `id` string, required: Provider post id.
    - `in_reply_to_id` string, nullable, required
    - `is_reply` boolean, required
    - `labels` SocialXHighlightLabel[], required
      - `evidence` string[], required
      - `label` string, required
      - `model` string, required
    - `match` union, required: Why the post counts for this token, as decided by the indexer. A cashtag alone is never sufficient.
      - object
        - `kind` 'contract_address', required
        - `evidence` object, required
          - `address` string, required
      - object
        - `kind` 'cashtag_with_name', required
        - `evidence` object, required
          - `cashtag` string, required
          - `name` string, required
      - object
        - `kind` 'curated_alias', required
        - `evidence` object, required: A checked-in alias or cashtag of a major asset; at least one is present.
          - `alias` string
          - `cashtag` string
    - `observed_at_ms` string, required: When the collector last observed the post.
    - `posted_at_ms` string, required
    - `text` string, required
    - `url` string, uri, required
    - `display_text` string, required
    - `display` SocialXDisplay, required
      - `version` 'x-display-v1', required
      - `status` 'cleaned' | 'unchanged' | 'fallback', required
      - `empty` boolean, required
      - `removed_mentions` integer, required
  - `source` 'x', required

## Other responses

- `400`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `401`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `429`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `503`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.

---

[API](https://skmtc.dev/arbital/apis/arbital-api.md) - [All operations](https://skmtc.dev/arbital/apis/arbital-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arbital/apis/arbital-api/revisions/bb0185edf43a?raw)
