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

# Threads

> Create a post for Threads.

## Request Fields

| Field            | Required | Description                                            |
| ---------------- | -------- | ------------------------------------------------------ |
| `media_type`     | Yes      | `text`, `image`, `video`, or `carousel`                |
| `content`        | \*       | Post text (max 500 chars)                              |
| `media_urls`     | \*       | URLs of media (max 10)                                 |
| `reply_control`  | No       | `everyone`, `accounts_you_follow`, or `mentioned_only` |
| `status`         | No       | `draft` or `scheduled`                                 |
| `scheduled_date` | No       | ISO 8601 date                                          |

<Note>\* `content` required for `text` type. `media_urls` required for `image`, `video`, `carousel` types.</Note>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.stover.app/v1/posts/threads \
    -H "Authorization: Bearer stover_pk_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "media_type": "text",
      "content": "What is everyone working on today?",
      "reply_control": "everyone",
      "status": "draft"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.stover.app/v1/posts/threads', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer stover_pk_your_api_key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      media_type: 'text',
      content: 'What is everyone working on today?',
      reply_control: 'everyone',
      status: 'draft'
    })
  });
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.stover.app/v1/posts/threads',
      headers={
          'Authorization': 'Bearer stover_pk_your_api_key',
          'Content-Type': 'application/json'
      },
      json={
          'media_type': 'text',
          'content': 'What is everyone working on today?',
          'reply_control': 'everyone',
          'status': 'draft'
      }
  )
  ```
</CodeGroup>

## Media Types

| Type       | Content  | Media           |
| ---------- | -------- | --------------- |
| `text`     | Required | Not allowed     |
| `image`    | Optional | Required (1)    |
| `video`    | Optional | Required (1)    |
| `carousel` | Optional | Required (2-10) |


## OpenAPI

````yaml POST /v1/posts/threads
openapi: 3.1.0
info:
  title: Stover API
  description: API for managing contacts and social media posts
  version: 1.0.0
  contact:
    email: support@stover.app
servers:
  - url: https://api.stover.app
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/posts/threads:
    post:
      tags:
        - Posts
      summary: Create Threads Post
      description: Create a post for Threads.
      operationId: createThreadsPost
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ThreadsPostRequest'
      responses:
        '201':
          description: Post created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    ThreadsPostRequest:
      type: object
      required:
        - media_type
      properties:
        media_type:
          type: string
          enum:
            - text
            - image
            - video
            - carousel
        content:
          type: string
          description: Post text (max 500 chars)
        media_urls:
          type: array
          items:
            type: string
        reply_control:
          type: string
          enum:
            - everyone
            - accounts_you_follow
            - mentioned_only
          default: everyone
        status:
          type: string
          enum:
            - draft
            - scheduled
          default: draft
        scheduled_date:
          type: string
          format: date-time
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          type: object
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
  responses:
    BadRequest:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key: Bearer stover_pk_...'

````