---
title: "List connected accounts"
method: GET
path: "/social-accounts"
---

# List connected accounts

`GET /social-accounts`

## Request

- Base URL: `https://xpost.to/api/v1`
- URL: `https://xpost.to/api/v1/social-accounts`
- Auth: HTTP bearer

The agent's account-discovery endpoint: id, platform, username, status per connected account. Each account also carries `ref` — the readable name to send in `social_accounts` when creating a post (`x:someone`). Use it rather than the id: an agent's post is shown to a person to approve, printed as the agent wrote it, and a uuid asks them to approve a destination they cannot see. `ref` is always sendable as returned; for the rare account whose username is duplicated on its platform it IS the id. Each account also carries `limits` and `can` — what this connection will actually publish. `limits`: `caption_chars`, `caption_chars_available` (the room the caption really has), `max_media`, `media_required` (a text-only post is refused where true), `video_seconds`. `can`: `placements` (surfaces beyond the feed), `first_comment`, `people_tags`, `reel_music`, `documents`, `mixed_media`. These are **route** facts, not the platform's brochure: Threads documents 20 attachments and takes 10 through us, Pinterest carousels five images on a natively connected account and pins one through the aggregator — `max_media` follows the route — and several of the `can` flags depend on how this account was connected.

## Response `200`

Accounts

- object
  - `data` object[]
    - `id` string
    - `ref` string: What to WRITE when posting here — "x:someone". The id is still accepted, but a person approving the call can check a handle where a uuid tells them nothing.
    - `platform` string
    - `username` string
    - `status` string
    - `limits` object
      - `caption_chars` integer, nullable
      - `caption_chars_available` integer, nullable
      - `max_media` integer, nullable
      - `media_required` boolean
      - `video_seconds` object
        - `min` integer, nullable
        - `max` integer, nullable
    - `can` object
      - `placements` string[]
      - `first_comment` boolean
      - `people_tags` boolean
      - `reel_music` boolean
      - `documents` boolean
      - `mixed_media` boolean

## Other responses

- `401`: Missing or invalid API key
- `429`: Rate limited

---

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