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

# Workspaces this key can act in

> Pass a workspace `id` as `workspace_id` on other calls. Works on every plan; `paid` tells whether the rest of the API is available there.



## OpenAPI

````yaml /openapi.json get /workspaces
openapi: 3.1.0
info:
  title: CaptureFlow API
  version: 1.0.0
  description: >-
    Read and create content in CaptureFlow. Scheduling and posting always go
    through an approval the user accepts in CaptureFlow: the API never publishes
    on its own (POST /posts/{id}/proposals, then the user accepts at
    `approval_url`).


    Authenticate with an API key from Settings > API & MCP (`Authorization:
    Bearer cf_live_...`), or as an app the user connected through OAuth 2.1
    (`Authorization: Bearer cfo_at_...`; PKCE, discovery at
    `/.well-known/oauth-protected-resource`). Both act for their user; pass
    `workspace_id` when the user belongs to several workspaces. `as_user` works
    with API keys only.


    The same operations are tools of the MCP server at
    https://mcp.captureflow.ai/mcp (read-only:
    https://mcp.captureflow.ai/mcp/readonly).


    Errors: https://docs.captureflow.ai/api/errors
servers:
  - url: https://api.captureflow.ai/v1
security:
  - apiKey: []
  - oauth2: []
tags:
  - name: Account
    description: Who the key or app acts for, and the workspaces it can use.
  - name: Ideas
    description: 'Content ideas: the topics posts are written about.'
  - name: Inputs
    description: Source material (text, links, files) that posts are made from.
  - name: Posts
    description: >-
      Draft posts, platform checks and proposals the user accepts in
      CaptureFlow.
  - name: Social accounts
    description: The social accounts connected in the workspace.
  - name: Strategy
    description: The workspace content strategy.
  - name: Content agent
    description: >-
      Runs of the content agent that writes drafts from an idea, an input or
      text.
  - name: Meta
    description: Service status.
paths:
  /workspaces:
    get:
      tags:
        - Account
      summary: Workspaces this key can act in
      description: >-
        Pass a workspace `id` as `workspace_id` on other calls. Works on every
        plan; `paid` tells whether the rest of the API is available there.
      operationId: list_workspaces
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: list
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Workspace'
                  has_more:
                    type: boolean
                  next_cursor:
                    type:
                      - string
                      - 'null'
                required:
                  - object
                  - data
                  - has_more
                  - next_cursor
                additionalProperties: false
        '400':
          description: >-
            Invalid request (`validation_failed`, `workspace_required`,
            `credentials_in_url`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Missing, invalid, revoked or expired key or access token
            (`unauthorized`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Not allowed (`insufficient_scope`, `api_disabled`,
            `workspace_locked`, `as_user_forbidden`, `viewer_read_only`,
            `managed_member_restricted`, `platform_not_enabled`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited (`rate_limited`); see `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Our fault (`internal_error`); quote the `request_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            The API is not available (`api_unavailable`), or changes are paused
            (`writes_unavailable`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Workspace:
      type: object
      properties:
        object:
          type: string
          const: workspace
        id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        name:
          type:
            - string
            - 'null'
        role:
          type: string
        paid:
          type: boolean
        api_access_enabled:
          type: boolean
        is_default:
          type: boolean
        upgrade_url:
          type:
            - string
            - 'null'
      required:
        - object
        - id
        - name
        - role
        - paid
        - api_access_enabled
        - is_default
        - upgrade_url
      additionalProperties: false
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              description: The kind of error, e.g. `permission_error`.
            code:
              type: string
              description: Stable code to branch on, e.g. `insufficient_scope`.
            message:
              type: string
              description: For people; may change.
            param:
              type: string
            details:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
            doc_url:
              type: string
            request_id:
              type: string
              description: Quote it when contacting support.
          required:
            - type
            - code
            - message
            - doc_url
            - request_id
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: cf_live_...
      description: An API key from Settings > API & MCP.
    oauth2:
      type: oauth2
      description: >-
        An app the user connected (OAuth 2.1, PKCE S256, client ID metadata
        documents or dynamic registration). Access tokens look like
        `cfo_at_...`.
      flows:
        authorizationCode:
          authorizationUrl: https://app.captureflow.ai/oauth/authorize
          tokenUrl: https://app.captureflow.ai/api/oauth/token
          refreshUrl: https://app.captureflow.ai/api/oauth/token
          scopes:
            ideas:read: Read content ideas.
            ideas:write: Create content ideas.
            inputs:read: Read inputs (text, links, uploads) and their processing state.
            inputs:write: 'Create inputs: text, links and file uploads.'
            posts:read: Read posts and check them against platform rules.
            posts:write: Create and edit draft posts.
            posts:schedule: >-
              Propose posts for scheduling or posting; the user accepts each
              proposal in CaptureFlow.
            strategy:read: Read the content strategy.
            brand:read: 'Reserved: no endpoints yet.'
            knowledge:read: 'Reserved: no endpoints yet.'
            accounts:read: Read connected social accounts.
            analytics:read: 'Reserved: no endpoints yet.'
            agent:run: Start the content agent and read its runs.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.