---
title: "X posts for Early's Top and Latest with server-side filters"
method: GET
path: "/v2/social/x/feed"
tags: ["Social Community"]
---

# X posts for Early's Top and Latest with server-side filters

`GET /v2/social/x/feed`

## 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/x/feed`
- Auth: HTTP bearer

Authenticated page of real X posts about covered markets, served from the indexer's shared collection (collected once for all users; no request ever triggers a provider search). order=top ranks by substance, freshness and engagement with per-author and per-asset caps inside a score generation; order=latest is newest by original publication time. Filters apply across all eligible content: market (crypto includes memecoins; memecoins narrows), content (news or discussions), and one asset (<chain_id>:<address>) or company (ticker). Paging is anchored so later pages never reshuffle; a Top cursor whose generation expired returns 409 and the client restarts. availability distinguishes nothing-found (available with an empty list) from not-yet-monitored/pending, delayed or budget-exhausted (partial, cached posts usable) and unavailable. Requesting an asset nobody covers yet registers it for shared collection and answers pending. Posts stay attributed to X; Early reactions never post back to X. Private/no-store; own read budget.

## Query parameters

- `order` 'top' | 'latest'
- `market` 'all' | 'crypto' | 'memecoins' | 'stocks'
- `content` 'all' | 'news' | 'discussions'
- `asset` string
- `company` string
- `limit` integer
- `cursor` string

## Response `200`

One page of X posts with availability and the next cursor

- SocialXFeedPage
  - `order` 'top' | 'latest', required
  - `filters` object, required
    - `market` 'all' | 'crypto' | 'memecoins' | 'stocks', required
    - `content` 'all' | 'news' | 'discussions', required
    - `asset` object, nullable, required
      - `chain_id` string, required
      - `address` string, required
    - `company` string, nullable, required
  - `availability` SocialXFeedAvailability, required
    - `state` 'available' | 'partial' | 'pending' | 'unavailable', required
    - `coverage` 'not_monitored' | 'pending' | 'collected' | 'delayed' | 'unavailable' | 'budget_exhausted' | 'null', nullable, required: Subject coverage state when an asset or company filter is set.
    - `last_collected_at_ms` string, nullable, required
    - `cache_usable` boolean, required
    - `generation` string, nullable, required: Top score generation this page belongs to.
    - `retry_after_ms` integer, nullable, required
  - `items` SocialXFeedPost[], required
    - `id` string, uuid, required: Stable Early record id derived from the X post identity.
    - `x_post_id` string, required
    - `source` 'x', required
    - `author` SocialXFeedAuthor, required
      - `id` string, required: Stable X account id.
      - `username` string, required
      - `display_name` string, nullable, required
      - `avatar_url` string, nullable, required
      - `verified` boolean, required
      - `followers` string, nullable, required: Follower count as observed; null when unknown.
    - `text` string, required
    - `url` string, required
    - `media` SocialXFeedMedia[], required
      - `kind` 'photo' | 'video' | 'gif', required
      - `url` string, required
      - `preview_url` string, nullable, required
    - `posted_at_ms` string, required: Original publication time (from the post id).
    - `observed_at_ms` string, required: First collection time.
    - `updated_at_ms` string, required: Last collection or update.
    - `removed_at_ms` string, nullable, required
    - `classification` object, required
      - `market` string[], required
      - `content_type` 'news' | 'discussion', required
      - `topics` string[], required
      - `evidence` string[], required
    - `matches` SocialXFeedMatch[], required
      - `subject_kind` 'token' | 'company' | 'topic', required
      - `subject_id` string, required
      - `token` object, nullable, required
        - `chain_id` string, required
        - `address` string, required
      - `company` object, nullable, required
        - `ticker` string, required
        - `name` string, nullable, required
      - `match_kind` 'contract_address' | 'cashtag_with_name' | 'curated_alias' | 'topic_query', required
      - `evidence` object, required: Matched text evidence, e.g. {"address":...}, {"cashtag":"$SOL","name":"Solana"}, {"alias":...} or {"term":...}.
    - `engagement` object, required: X counts only, separate from Early reactions; null means unknown.
      - `likes` string, nullable, required
      - `reposts` string, nullable, required
      - `replies` string, nullable, required
      - `quotes` string, nullable, required
      - `views` string, nullable, required
      - `bookmarks` string, nullable, required
      - `observed_at_ms` string, required
    - `relationships` object, required
      - `in_reply_to_id` string, nullable, required
      - `quoted_post_id` string, nullable, required
      - `conversation_id` string, nullable, required
    - `actions` object, required
      - `discussion_target_id` string, required: Canonical Early discussion target (x_post:<uuid>).
      - `reactions_available` boolean, required: True: react through `/v2/social/x/posts/{x_post_id}/reactions`. Early reactions never post to X.
      - `replies_available` boolean, required: False in this version; Early replies on X posts are not offered yet.
    - `display_text` string, required
    - `display` SocialXDisplay, required
      - `version` 'x-display-v1', required
      - `status` 'cleaned' | 'unchanged' | 'fallback', required
      - `empty` boolean, required
      - `removed_mentions` integer, required
  - `next_cursor` string, nullable, 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.
- `409`: 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)
