---
title: "POST /v2/social/posts"
method: POST
path: "/v2/social/posts"
tags: ["Social Community"]
---

# POST /v2/social/posts

`POST /v2/social/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/social/posts`
- Auth: HTTP bearer

Creates a community post containing text and/or structured token, post or position attachments. Send a position with chain_id and address, without snapshot, to capture the authenticated owner's current Codex holding as provider_reported. Caller-supplied snapshots remain author_claimed. Parent and attachment inserts are atomic. Unavailable or incomplete position observations return 503 position_snapshot_unavailable with no post written. Missing holdings or invisible source references return 404 attachment_reference_not_found. Approved post media_ids may accompany text and structured attachments or create a media-only post; publish_to_x must be explicitly false. A nonempty retired media URL array returns 422. A disabled media write gate returns 503 social_media_disabled; invalid ownership, scope, gallery or binding returns 400 invalid_social_media.

## Request body

- union: Requires nonblank text, structured attachments or approved media_ids. Parent, structured attachments and media bind in one transaction. Nonempty media_ids requires explicit publish_to_x:false. Position references cannot fall back to author-supplied figures. Native mentions support stable Early user IDs only. Imported-thesis/trade routes reject mention/key fields. No financial authority or external identity inference is granted.
  - union
    - object
      - `body` string, required
      - `media` SocialPostMediaInput[]: Compatibility field; only an empty array is accepted. Use media_ids for approved uploads.
        - `media_url` string, uri, required
        - `mime_type` 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif', required
        - `size_bytes` integer, required
      - `publish_to_x` boolean: Defaults to true for text posts. Any nonempty media_ids requires explicit false; new media is not published to X. Structured attachment-only posts default to false and reject explicit true.
      - `attachments` SocialPostAttachmentInput[]: Ordered structured references, separate from uploaded media. Duplicate same-kind identities are rejected after normalization.
        - union: Ordered token, post, current owner-position, author-claimed position or verified position references. Current positions are requested by exact chain/address without a snapshot.
          - object
            - `kind` 'token', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
          - object
            - `kind` 'post', required
            - `post_id` string, uuid, required
          - object: Attach the authenticated owner’s current holding. The backend reads a fresh Codex portfolio observation; callers supply no figures, wallet, owner or verification. Missing holdings return 404; unavailable/incomplete/stale observations return 503.
            - `kind` 'position', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
          - object
            - `kind` 'position', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
            - `snapshot` SocialPositionSnapshotInput, required: Author-supplied historical figures. Missing value or profit becomes null. Recorded time and verification are assigned by the server.
              - …
          - object
            - `kind` 'position', required
            - `position_id` string, required
      - `media_ids` string[]: Upload IDs in gallery order. Each must belong to the actor, be approved, ready, unexpired and unbound, and match the write scope and exact chat when applicable. Up to four still images or one GIF; no mixed gallery. Binding is atomic with the parent write.
      - `mentions` NativeMentionInput[]: Explicit native targets; no targets are inferred from plain @text. Offsets use Unicode code points in the exact canonical body; no trimming is allowed when nonempty.
        - `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
      - `client_content_id` string, uuid: Actor/source-kind scoped creation key. Matching replay returns the original readable source; a changed command returns 409. Required with nonempty mentions.
    - object
      - `body` string
      - `media` SocialPostMediaInput[]: Compatibility field; only an empty array is accepted. Use media_ids for approved uploads.
        - `media_url` string, uri, required
        - `mime_type` 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif', required
        - `size_bytes` integer, required
      - `publish_to_x` false: Defaults to true for text posts. Any nonempty media_ids requires explicit false; new media is not published to X. Structured attachment-only posts default to false and reject explicit true.
      - `attachments` SocialPostAttachmentInput[], required: Ordered structured references, separate from uploaded media. Duplicate same-kind identities are rejected after normalization.
        - union: Ordered token, post, current owner-position, author-claimed position or verified position references. Current positions are requested by exact chain/address without a snapshot.
          - object
            - `kind` 'token', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
          - object
            - `kind` 'post', required
            - `post_id` string, uuid, required
          - object: Attach the authenticated owner’s current holding. The backend reads a fresh Codex portfolio observation; callers supply no figures, wallet, owner or verification. Missing holdings return 404; unavailable/incomplete/stale observations return 503.
            - `kind` 'position', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
          - object
            - `kind` 'position', required
            - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
            - `snapshot` SocialPositionSnapshotInput, required: Author-supplied historical figures. Missing value or profit becomes null. Recorded time and verification are assigned by the server.
              - …
          - object
            - `kind` 'position', required
            - `position_id` string, required
      - `media_ids` string[]: Upload IDs in gallery order. Each must belong to the actor, be approved, ready, unexpired and unbound, and match the write scope and exact chat when applicable. Up to four still images or one GIF; no mixed gallery. Binding is atomic with the parent write.
      - `mentions` NativeMentionInput[]: Explicit native targets; no targets are inferred from plain @text. Offsets use Unicode code points in the exact canonical body; no trimming is allowed when nonempty.
        - `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
      - `client_content_id` string, uuid: Actor/source-kind scoped creation key. Matching replay returns the original readable source; a changed command returns 409. Required with nonempty mentions.
  - object
    - `body` string
    - `media` SocialPostMediaInput[]: Compatibility field; only an empty array is accepted. Use media_ids for approved uploads.
      - `media_url` string, uri, required
      - `mime_type` 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif', required
      - `size_bytes` integer, required
    - `publish_to_x` false, required: Defaults to true for text posts. Any nonempty media_ids requires explicit false; new media is not published to X. Structured attachment-only posts default to false and reject explicit true.
    - `attachments` SocialPostAttachmentInput[]: Ordered structured references, separate from uploaded media. Duplicate same-kind identities are rejected after normalization.
      - union: Ordered token, post, current owner-position, author-claimed position or verified position references. Current positions are requested by exact chain/address without a snapshot.
        - object
          - `kind` 'token', required
          - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
          - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
        - object
          - `kind` 'post', required
          - `post_id` string, uuid, required
        - object: Attach the authenticated owner’s current holding. The backend reads a fresh Codex portfolio observation; callers supply no figures, wallet, owner or verification. Missing holdings return 404; unavailable/incomplete/stale observations return 503.
          - `kind` 'position', required
          - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
          - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
        - object
          - `kind` 'position', required
          - `chain_id` 'solana:mainnet-beta' | 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
          - `address` string, required: Address for the selected chain. EVM addresses normalize to lowercase; Solana retains case. Zero/system addresses are rejected.
          - `snapshot` SocialPositionSnapshotInput, required: Author-supplied historical figures. Missing value or profit becomes null. Recorded time and verification are assigned by the server.
            - `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: Exact nonnegative canonical decimal, at most 78 integer and 36 fractional digits. No exponent, leading zeros, or trailing fractional zeros.
            - `profit_usd` string: Exact canonical signed decimal; negative zero is rejected.
        - object
          - `kind` 'position', required
          - `position_id` string, required
    - `media_ids` string[], required: Upload IDs in gallery order. Each must belong to the actor, be approved, ready, unexpired and unbound, and match the write scope and exact chat when applicable. Up to four still images or one GIF; no mixed gallery. Binding is atomic with the parent write.
    - `mentions` NativeMentionInput[]: Explicit native targets; no targets are inferred from plain @text. Offsets use Unicode code points in the exact canonical body; no trimming is allowed when nonempty.
      - `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
    - `client_content_id` string, uuid: Actor/source-kind scoped creation key. Matching replay returns the original readable source; a changed command returns 409. Required with nonempty mentions.

## Response `201`

Community post created

- SocialPost
  - `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.
            - `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.
              - …
        - 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
            - `chain_id` 'solana:mainnet-beta', required
            - `address` string, required
          - object
            - `chain_id` 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required
        - `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
            - `chain_id` 'solana:mainnet-beta', required
            - `address` string, required
          - object
            - `chain_id` 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required
        - `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
            - `chain_id` 'solana:mainnet-beta', required
            - `address` string, required
          - object
            - `chain_id` 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required
        - `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
            - `chain_id` 'solana:mainnet-beta', required
            - `address` string, required
          - object
            - `chain_id` 'eip155:1' | 'eip155:56' | 'eip155:143' | 'eip155:4663' | 'eip155:5042' | 'eip155:8453' | 'eip155:42161', required
            - `address` string, required
        - `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.
- `403`: The account remains active for financial and recovery access but cannot perform this social write
- `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.
- `409`: content_idempotency_conflict or mention_target_changed; no partial creation.
- `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`: The server-owned safety policy rejected the social content before persistence or delivery
- `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)
