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

# Create a post



## OpenAPI

````yaml /api/openapi.yaml post /post
openapi: 3.1.0
info:
  title: Sleekplan API
  version: '1.0'
  description: >-
    The Sleekplan API is organized around REST. It has predictable
    resource-oriented URLs, accepts JSON request bodies, returns JSON-encoded
    responses, and uses standard HTTP response codes and authentication.


    Use the Sleekplan API for operations within your workspace — read, create,
    update, or delete posts, comments, changelog updates, users, and more. The
    API key you use to authenticate the request determines what you can access.


    ## Rate limits


    Sleekplan enforces a multi-level rate limit based on client IP and
    authenticated user. If you exceed the limit you receive a `429 Too Many
    Requests` response.


    ## Authentication


    The API uses API key authentication. Get your key from **Settings →
    Developer** in the Sleekplan dashboard. Three ways to pass it:


    - **Basic auth** — `-u YOUR_API_KEY:` (note the trailing colon — no
    password)

    - **Bearer token** — `Authorization: Bearer YOUR_API_KEY`

    - **Query parameter** — `?api_key=YOUR_API_KEY`


    All requests must be HTTPS. Treat your API key as a secret — never commit it
    or expose it client-side.


    ```sh

    curl https://api.sleekplan.com/v1/posts \
      -u YOUR_API_KEY:
    ```


    ## Errors


    Sleekplan uses conventional HTTP status codes. `2xx` indicates success;
    `4xx` indicates a client error (bad parameters, auth, etc.); `5xx` indicates
    a server error.


    Successful responses:


    ```json

    {
      "status": "success",
      "data": { }
    }

    ```


    Error responses:


    ```json

    {
      "status": "error",
      "message": "Error message"
    }

    ```


    | HTTP status | Code | Description |

    |---|---|---|

    | **OK** | 200 | Request succeeded. |

    | **Bad Request** | 400 | Request was malformed or missing a required
    parameter. |

    | **Unauthorized** | 401 | No valid API key provided. |

    | **Request Failed** | 402 | Parameters were valid but the request failed. |

    | **Forbidden** | 403 | API key lacks permission for this request. |

    | **Not Found** | 404 | Requested resource does not exist. |

    | **Too Many Requests** | 429 | Rate limit exceeded. |
  contact:
    url: https://sleekplan.com/contact/
    email: support@sleekplan.com
    name: Sleekplan
  termsOfService: https://sleekplan.com/terms/
servers:
  - url: https://api.sleekplan.com/v1
    description: API Version 1
security:
  - BearerAuth: []
  - BasicAuth: []
  - ApiKeyQuery: []
paths:
  /post:
    post:
      tags:
        - Post
      summary: Create a post
      operationId: create-post
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - title
                - type
              properties:
                title:
                  type: string
                  description: Post title. Plain text only.
                type:
                  type: string
                  description: >-
                    Category ID to assign to this post. Every post must have a
                    category.
                description:
                  type: string
                  description: Post description. Plain text or Markdown — never HTML.
                status:
                  type: string
                  description: Status ID. Defaults to "open".
                user:
                  type: integer
                  description: End-user ID to create the post on behalf of a user.
                created:
                  type: string
                  example: '2024-01-01 00:00:00'
                  description: >-
                    Creation date in `YYYY-MM-DD HH:ii:ss`. Must be now or in
                    the past.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: object
                    properties:
                      feedback_id:
                        type: integer
                      message:
                        type: string
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
    BasicAuth:
      type: http
      scheme: basic
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key

````