---
title: "GET /v2/users/{username}/posts"
method: GET
path: "/v2/users/{username}/posts"
tags: ["Social Community"]
---

# GET /v2/users/{username}/posts

`GET /v2/users/{username}/posts`

## 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/users/{username}/posts`
- Auth: one of:
  - HTTP bearer
  - none

Lists community posts created by an Arbital profile. Pinned posts sort first, then creation time and ID. Pass next_cursor unchanged: it captures the complete ordering position. Legacy cursors remain accepted. Pin changes are live rather than a snapshot; refresh to restart the current ordering. Compatibility alias of the social-profile posts route.

## Path parameters

- `username` string, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Profile community posts

- SocialPostPage
  - `next_cursor` string, nullable, required: Opaque scope-bound cursor for the next page.
  - `posts` SocialPost[], required
    - `author` SocialPostAuthor, required
      - `display_name` string, nullable, required
      - `profile_image_url` string, nullable, required: Approved profile image or stable CALLD default avatar URL.
      - `user_id` string, uuid, required
      - `username` string, required
      - `x_avatar_url` string, nullable, required
    - `body` string, required
    - `created_at_ms` string, required
    - `id` string, uuid, required
    - `like_count` integer, required
    - `media` union, required: Ordered immutable slots, with unique IDs and zero-based ordinals matching array positions. Up to four still images, or exactly one GIF. Deletion preserves the slot and original ID. Replies, messages and recap comments omit this field when there are no slots; posts return an empty array.
      - union[]
        - union
          - SocialMediaImage
            - `id` string, uuid, required
            - `media_kind` 'image', required
            - `mime_type` 'image/jpeg' | 'image/png' | 'image/webp', required
            - `size_bytes` integer, required
            - `width` integer, required
            - `height` integer, required
            - `access_path` string, required: Authenticated relative byte-read path for this media ID; never a public or signed storage URL.
            - `ordinal` integer, required
            - `deleted` false
            - `delivery` SocialMediaDelivery: Optional HTTP-only delivery capability, issued after current access checks. URLs expire together at expires_at. Clients load the thumbnail in feeds and the full normalized image or animated GIF when opened. Refresh by re-reading the parent endpoint; access_path remains an authenticated fallback. Never persist, broadcast or share these viewer-specific URLs.
              - …
          - DeletedSocialMedia: Permanent bound slot after media removal. Only these three fields remain; the parent remains renderable even when its body is empty and every image is deleted.
            - `id` string, uuid, required
            - `ordinal` integer, required
            - `deleted` true, required
      - SocialMediaGif[]
        - `id` string, uuid, required
        - `media_kind` 'gif', required
        - `mime_type` 'image/gif', required
        - `size_bytes` integer, required
        - `width` integer, required
        - `height` integer, required
        - `access_path` string, required: Authenticated relative byte-read path for this media ID; never a public or signed storage URL.
        - `source_tenor_url` string
        - `ordinal` integer, required
        - `deleted` false
        - `delivery` SocialMediaDelivery: Optional HTTP-only delivery capability, issued after current access checks. URLs expire together at expires_at. Clients load the thumbnail in feeds and the full normalized image or animated GIF when opened. Refresh by re-reading the parent endpoint; access_path remains an authenticated fallback. Never persist, broadcast or share these viewer-specific URLs.
          - `url` string, uri, required: Short-lived Cloudflare Worker URL for the full normalized image or GIF. Treat it as opaque; refetch authorized parent metadata before expires_at to renew.
          - `expires_at` string, date-time, required
          - `thumbnail` object: Bounded WebP preview. Animated GIFs use an approved still poster.
            - `url` string, uri, required
            - `mime_type` 'image/webp', required
            - `size_bytes` integer, required
            - `width` integer, required
            - `height` integer, required
    - `pinned` boolean, required
    - `viewer_liked` boolean, required
    - `x_post_url` string, nullable, required
    - `x_publish_state` string, required
    - `attachments` SocialPostAttachment[], required: Immutable ordered references and snapshots with viewer-scoped source availability. Historical values are distinct from live portfolio values.
      - union
        - object: Canonical token reference; does not prove that the token exists.
          - `id` string, uuid, required
          - `ordinal` integer, required
          - `kind` 'token', required
          - `asset` union, required
            - object
              - …
            - object
              - …
          - `verification` 'author_claimed', required
        - object: The backend resolved the original post and author when shared. Verification applies to the reference, not its financial statements. Deleted, blocked or inactive sources retain the ID but return a null author and unavailable state. No recursive content expansion.
          - `id` string, uuid, required
          - `ordinal` integer, required
          - `kind` 'post', required
          - `post_id` string, uuid, required
          - `original_author` SocialAttachmentAuthor, required
            - `user_id` string, uuid, required
            - `username` string, required
            - `display_name` string, nullable, required
            - `profile_image_url` string, nullable, required
          - `availability` 'available' | 'unavailable', required
          - `verification` 'verified', required
        - object
          - `id` string, uuid, required
          - `ordinal` integer, required
          - `kind` 'position', required
          - `asset` union, required
            - object
              - …
            - object
              - …
          - `position_id` unknown, required
          - `source` 'author', required
          - `calculation_version` unknown, required
          - `snapshot` SocialPositionSnapshot, required: Immutable historical snapshot. Never refreshed from current holdings or prices, and never used as portfolio, quote, settlement or accounting authority.
            - `quantity` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `value_usd` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `profit_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `recorded_at_ms` string, required
            - `entry_price_usd` string, nullable: Entry captured from eligible Codex basis when this immutable post snapshot was created.
          - `verification` 'author_claimed', required
          - `lifecycle` SocialPositionLifecycleSummary: Optional social-display lifecycle for a permanently retained position attachment. Initially supported for tracked non-native Solana tokens only. Open/closed requires complete bounded Codex token history that matches the immutable attachment quantity and current provider holding; unknown means that evidence is unavailable, incomplete, unsupported, or inconsistent, never proof of a zero holding. A later purchase reopens the same attachment without removing prior cycles. Stale summaries return state unknown and null realized_pnl_usd/current_cycle_id; observed_at_ms and closed_cycle_count retain historical context. Freshness does not imply known P&L. Realized P&L is a provider estimate, not tax/accounting evidence; unavailable valuation returns null, and fees are unavailable. Never balance, quote, settlement, or execution authority. The original snapshot is unchanged.
            - `state` 'open' | 'closed' | 'unknown', required
            - `source` 'codex', required
            - `calculation_status` 'provider_estimate', required
            - `fees_status` 'unavailable', required
            - `observed_at_ms` integer, nullable, required: Unix timestamp in milliseconds as a JSON number.
            - `freshness` 'fresh' | 'stale', required
            - `reason` string, nullable, required
            - `realized_pnl_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `current_cycle_id` string, nullable, required
            - `closed_cycle_count` integer, required
        - object: Available only through the authoritative position reader. Ownership, complete source evidence and observation time are validated before storage.
          - `id` string, uuid, required
          - `ordinal` integer, required
          - `kind` 'position', required
          - `asset` union, required
            - object
              - …
            - object
              - …
          - `position_id` string, required
          - `source` 'position_ledger', required
          - `calculation_version` string, required
          - `snapshot` SocialPositionSnapshot, required: Immutable historical snapshot. Never refreshed from current holdings or prices, and never used as portfolio, quote, settlement or accounting authority.
            - `quantity` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `value_usd` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `profit_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `recorded_at_ms` string, required
            - `entry_price_usd` string, nullable: Entry captured from eligible Codex basis when this immutable post snapshot was created.
          - `verification` 'verified', required
          - `lifecycle` SocialPositionLifecycleSummary: Optional social-display lifecycle for a permanently retained position attachment. Initially supported for tracked non-native Solana tokens only. Open/closed requires complete bounded Codex token history that matches the immutable attachment quantity and current provider holding; unknown means that evidence is unavailable, incomplete, unsupported, or inconsistent, never proof of a zero holding. A later purchase reopens the same attachment without removing prior cycles. Stale summaries return state unknown and null realized_pnl_usd/current_cycle_id; observed_at_ms and closed_cycle_count retain historical context. Freshness does not imply known P&L. Realized P&L is a provider estimate, not tax/accounting evidence; unavailable valuation returns null, and fees are unavailable. Never balance, quote, settlement, or execution authority. The original snapshot is unchanged.
            - `state` 'open' | 'closed' | 'unknown', required
            - `source` 'codex', required
            - `calculation_status` 'provider_estimate', required
            - `fees_status` 'unavailable', required
            - `observed_at_ms` integer, nullable, required: Unix timestamp in milliseconds as a JSON number.
            - `freshness` 'fresh' | 'stale', required
            - `reason` string, nullable, required
            - `realized_pnl_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `current_cycle_id` string, nullable, required
            - `closed_cycle_count` integer, required
        - object: Historical snapshot fetched server-side from the authenticated owner’s Codex portfolio. Quantity is an exact decimal; value uses the provider price; profit is estimated unrealized P&L from Codex basis only. Unknown values are null. These are provider-reported display figures, not verified financial/accounting facts. Relay/Mobula supplemented basis and experimental closed cycles are excluded. Post reads never refresh the snapshot.
          - `id` string, uuid, required
          - `ordinal` integer, required
          - `kind` 'position', required
          - `asset` union, required
            - object
              - …
            - object
              - …
          - `position_id` unknown, required
          - `source` 'codex', required
          - `calculation_version` 'codex_position_recap_v1', required
          - `snapshot` SocialPositionSnapshot, required: Immutable historical snapshot. Never refreshed from current holdings or prices, and never used as portfolio, quote, settlement or accounting authority.
            - `quantity` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `value_usd` string, required: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `profit_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `recorded_at_ms` string, required
            - `entry_price_usd` string, nullable: Entry captured from eligible Codex basis when this immutable post snapshot was created.
          - `verification` 'provider_reported', required
          - `lifecycle` SocialPositionLifecycleSummary: Optional social-display lifecycle for a permanently retained position attachment. Initially supported for tracked non-native Solana tokens only. Open/closed requires complete bounded Codex token history that matches the immutable attachment quantity and current provider holding; unknown means that evidence is unavailable, incomplete, unsupported, or inconsistent, never proof of a zero holding. A later purchase reopens the same attachment without removing prior cycles. Stale summaries return state unknown and null realized_pnl_usd/current_cycle_id; observed_at_ms and closed_cycle_count retain historical context. Freshness does not imply known P&L. Realized P&L is a provider estimate, not tax/accounting evidence; unavailable valuation returns null, and fees are unavailable. Never balance, quote, settlement, or execution authority. The original snapshot is unchanged.
            - `state` 'open' | 'closed' | 'unknown', required
            - `source` 'codex', required
            - `calculation_status` 'provider_estimate', required
            - `fees_status` 'unavailable', required
            - `observed_at_ms` integer, nullable, required: Unix timestamp in milliseconds as a JSON number.
            - `freshness` 'fresh' | 'stale', required
            - `reason` string, nullable, required
            - `realized_pnl_usd` string, required: Exact canonical signed decimal; negative zero is rejected.
            - `current_cycle_id` string, nullable, required
            - `closed_cycle_count` integer, required
    - `mentions` NativeReadMention[], required: Ordered historical entities with current viewer-scoped identity. Empty for legacy, imported or tombstoned content. A read failure is explicit, never a fabricated empty array.
      - `kind` 'early_user', required
      - `user_id` string, uuid, required
      - `offset` integer, required: Zero-based Unicode code-point offset, not UTF-16 units or graphemes.
      - `length` integer, required
      - `text` string, required: Immutable exact authored span, including @.
      - `availability` 'available' | 'unavailable', required
      - `current_profile` NativeMentionProfile, required
        - `user_id` string, uuid, required
        - `username` string, required
        - `display_name` string, nullable, required
        - `profile_image_url` string, nullable, required
      - `profile_target` NativeMentionTarget, required
        - `kind` 'early_user', required
        - `user_id` string, uuid, required
      - `notification_supported` true, 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.
- `404`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `408`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `413`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `422`: 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)
