> ## Documentation Index
> Fetch the complete documentation index at: https://docs.puffle.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List connected social media accounts

> List connected social media accounts

**CLI:**

```bash theme={null}
puffle calendar account
```

## Overview

List connected social media accounts

This page documents `get /api/calendar/accounts`. Use the request and response sections on this page for accepted parameters, payload fields, response fields, and authentication behavior.

## AI agent notes

* Confirm the operation matches the user's intent before calling it.
* For write operations, confirm the user intends to change state.
* Surface validation, permission, and not-found errors instead of retrying unchanged.


## OpenAPI

````yaml get /api/calendar/accounts
openapi: 3.0.3
info:
  title: Puffle API
  version: 1.0.0
  description: >-
    HTTP API for the Puffle GTM platform - strategy planning, campaign-backed
    Outbound execution, Puffle Agent runs, sender management, and Unibox reply
    workflows. Designed for operation by both humans and autonomous AI agents.
    Agents should start at the [Agent Playbook](/guides/agent-playbook) which
    prescribes a workspace-context check (`GET /api/context`) and core user
    journeys with exact call ordering.
  contact:
    name: Puffle Support
    url: https://puffle.ai
servers:
  - url: https://app.puffle.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Campaigns
    description: >-
      Campaign-backed Outbound execution. These endpoints manage draft,
      launching, active, paused, and completed Outbound runs with sequence
      nodes, contacts, and sender accounts.
  - name: Accounts
    description: Signed-in user account, settings, and workspace context endpoints.
  - name: Senders
    description: >-
      Connected sender accounts, email inboxes, sending domains, DNS
      verification, warmup, and sender capacity.
  - name: Socials
    description: >-
      Social post scheduling and inbox — schedule, publish, archive, and delete
      posts across LinkedIn, Twitter, Threads, Bluesky via the Late (late.ai)
      integration. Connect social accounts via OAuth, pull analytics, monitor
      mentions.
paths:
  /api/calendar/accounts:
    get:
      tags:
        - Socials
      summary: List connected social media accounts
      description: >-
        Returns every social account the caller has connected across all of
        their Late profiles. Used by the post composer to render the account
        picker. Accounts are surfaced here only after a successful OAuth connect
        + callback — see `connectLateAccount` and `lateOauthCallback` for the
        human-in-the-loop flow that populates this list.
      operationId: listSocialAccounts
      parameters: []
      responses:
        '200':
          description: List of connected accounts ready for posting. May be empty.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Internal social_accounts row id.
                        platform:
                          type: string
                          description: >-
                            Platform key, e.g. `linkedin` or `twitter`. Matches
                            Late's platform identifier.
                        username:
                          description: Handle or username as reported by the platform.
                          type: string
                          nullable: true
                        displayName:
                          description: Human-readable display name.
                          type: string
                          nullable: true
                        profilePicture:
                          description: URL to the account's avatar image.
                          type: string
                          nullable: true
                        profileLabel:
                          type: string
                          enum:
                            - Personal
                            - Company
                          description: >-
                            UI label derived from `accountType` — `Company` for
                            organization pages, `Personal` for individual
                            profiles.
                        accountType:
                          type: string
                          enum:
                            - personal
                            - organization
                          description: >-
                            Classification used by the posting flow. LinkedIn
                            company pages route through different APIs than
                            personal profiles.
                      required:
                        - id
                        - platform
                        - username
                        - displayName
                        - profilePicture
                        - profileLabel
                        - accountType
                      additionalProperties: false
                      description: >-
                        A connected social account available for posting.
                        Returned in a flat shape so the caller can render a
                        picker without joining additional tables.
                    description: >-
                      All social accounts connected across every Late profile
                      owned by the caller. Empty array if the user has no
                      profiles or no connected accounts yet.
                  postsUrl:
                    type: string
                    description: Posts page for reviewing these accounts.
                required:
                  - accounts
                  - postsUrl
                additionalProperties: false
              examples:
                withAccounts:
                  summary: User with one personal LinkedIn + one company page
                  value:
                    accounts:
                      - id: aaaa1111-1111-1111-1111-111111111111
                        platform: linkedin
                        username: jane-doe
                        displayName: Jane Doe
                        profilePicture: https://media.licdn.com/…/jane.jpg
                        profileLabel: Personal
                        accountType: personal
                      - id: aaaa2222-2222-2222-2222-222222222222
                        platform: linkedin
                        username: acme-corp
                        displayName: Acme Corp
                        profilePicture: https://media.licdn.com/…/acme.jpg
                        profileLabel: Company
                        accountType: organization
                    postsUrl: /profile/socials
                empty:
                  summary: No accounts connected yet
                  value:
                    accounts: []
                    postsUrl: /profile/socials
        '401':
          description: Missing or invalid Bearer token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                default:
                  value:
                    error: Unauthorized
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
              examples:
                default:
                  value:
                    error: Internal server error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: pk_live_...

````