> ## 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.

# List posts

> Returns a list of feedback posts. Sorted by trend by default.



## OpenAPI

````yaml /api/openapi.yaml get /posts
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:
  /posts:
    get:
      tags:
        - Post
      summary: List posts
      description: Returns a list of feedback posts. Sorted by trend by default.
      operationId: list-posts
      parameters:
        - in: query
          name: type
          schema:
            type: string
          description: Filter by category ID.
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - trend
              - top
              - new
              - updated
              - scoring
              - priority
              - eta
        - in: query
          name: filter
          schema:
            type: string
          description: Filter by status ID.
        - in: query
          name: owner
          schema:
            type: integer
          description: Filter by admin owner ID.
        - in: query
          name: search
          schema:
            type: string
        - in: query
          name: segment
          schema:
            type: string
          description: Filter by user segment ID (one per query).
        - in: query
          name: tags
          schema:
            type: string
          description: Comma-separated tag IDs.
        - in: query
          name: page
          schema:
            type: integer
        - in: query
          name: per_page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - in: query
          name: advanced
          schema:
            type: string
            example: >-
              {"meta": {"key": "test_key", "value": "test_value", "condition":
              "eq"}}
          description: Advanced JSON filter query.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: object
                    properties:
                      items:
                        type: object
                        additionalProperties:
                          $ref: '#/components/schemas/Post'
                      order:
                        type: array
                        items:
                          type: integer
                      has_more:
                        type: boolean
                      page:
                        type: integer
components:
  schemas:
    Post:
      type: object
      properties:
        feedback_id:
          type: integer
        product_id:
          type: integer
        title:
          type: string
        description:
          type: string
        status:
          type: string
        trend:
          type: integer
        type:
          type: string
        total_up:
          type: integer
        total_down:
          type: integer
        total_sum:
          type: integer
        total_comments:
          type: integer
        total_ratio:
          type: integer
        total_subscriber:
          type: integer
        scoring:
          type: number
        effort:
          type: integer
        owner_id:
          type: integer
        merge_id:
          type: integer
        is_active:
          type: integer
        notify:
          type: integer
        tags:
          type: object
        estimated:
          type:
            - number
            - 'null'
        created:
          type: string
        updated:
          type: string
        vote:
          type:
            - integer
            - 'null'
        subscription:
          type:
            - integer
            - 'null'
        description_html:
          type: string
        can_edit:
          type: boolean
        can_delete:
          type: boolean
        can_vote:
          type: boolean
        can_comment:
          type: boolean
        can_update:
          type: boolean
        user:
          $ref: '#/components/schemas/UserRef'
    UserRef:
      type: object
      properties:
        user_id:
          type: integer
        admin_id:
          type: integer
        sso:
          type: boolean
        anonymous:
          type: boolean
        data_name:
          type: string
        data_full_name:
          type: string
        data_mail:
          type: string
        data_img:
          type: string
        segments:
          type: array
          items:
            type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
    BasicAuth:
      type: http
      scheme: basic
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key

````