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

# List projects with filters and pagination

> Get all published projects with optional filters, pagination, and repository information



## OpenAPI

````yaml get /projects
openapi: 3.0.0
info:
  title: OST API
  description: OST API endpoints
  version: '0.1'
  contact: {}
servers:
  - url: https://api.opensource-together.com
    description: Backend server
security: []
tags:
  - name: ost
    description: ''
paths:
  /projects:
    get:
      tags:
        - Project
      summary: List projects with filters and pagination
      description: >-
        Get all published projects with optional filters, pagination, and
        repository information
      operationId: ProjectController_list
      parameters:
        - name: published
          required: false
          in: query
          description: Filter by published status. If not provided, returns all projects.
          schema:
            example: true
            type: boolean
        - name: orderDirection
          required: false
          in: query
          description: Sort direction
          schema:
            enum:
              - asc
              - desc
            type: string
        - name: orderBy
          required: false
          in: query
          description: Field to sort by
          schema:
            enum:
              - createdAt
              - title
              - trending
            type: string
        - name: categories
          required: false
          in: query
          description: >-
            Comma-separated list of category public IDs. Projects must have ALL
            specified categories (AND logic).
          schema:
            example: >-
              cat_ce9811d7a8964dab823393249a26cd81,cat_ce9811d7a8964dab823393249a26cd82
            type: string
        - name: techStacks
          required: false
          in: query
          description: >-
            Comma-separated list of techstack public IDs. Projects must have ALL
            specified techstacks (AND logic).
          schema:
            example: >-
              tst_ce9811d7a8964dab823393249a26cd81,tst_ce9811d7a8964dab823393249a26cd82
            type: string
        - name: per_page
          required: false
          in: query
          description: 'Number of items per page (minimum: 1, maximum: 100)'
          schema:
            minimum: 1
            maximum: 100
            example: 10
            type: number
        - name: page
          required: false
          in: query
          description: 'Page number for pagination (minimum: 1)'
          schema:
            minimum: 1
            example: 1
            type: number
      responses:
        '200':
          description: Projects found
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectEntity'
                  pagination:
                    type: object
                    properties:
                      total:
                        type: number
                        default: 1
                      lastPage:
                        type: number
                        default: 1
                      currentPage:
                        type: number
                        default: 1
                      size:
                        type: number
                        default: 10
                  timestamp:
                    type: string
                    format: date-time
components:
  schemas:
    ProjectEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^pjt_[0-9a-fA-F]{32}$
          example: pjt_c54b633eb12f4900b92b34e222096449
        title:
          type: string
          example: My Awesome Project
        description:
          type: string
          nullable: true
          example: A revolutionary web application
        repoUrl:
          type: string
          nullable: true
          example: https://github.com/username/repository
        provider:
          type: string
          enum:
            - GITHUB
            - GITLAB
          example: GITHUB
        image:
          type: string
          nullable: true
          example: https://example.com/image.jpg
        logoUrl:
          type: string
          nullable: true
          example: https://example.com/logo.png
        published:
          type: boolean
          example: true
          description: Whether the project is published and visible to public
        trending:
          type: boolean
          example: true
          description: Whether the project is marked as trending
        githubUrl:
          type: string
          nullable: true
          example: https://github.com/username/repository
        gitlabUrl:
          type: string
          nullable: true
          example: https://gitlab.com/username/repository
        twitterUrl:
          type: string
          nullable: true
          example: https://twitter.com/username
        linkedinUrl:
          type: string
          nullable: true
          example: https://linkedin.com/in/username
        discordUrl:
          type: string
          nullable: true
          example: https://discord.gg/server
        websiteUrl:
          type: string
          nullable: true
          example: https://example.com
        imagesUrls:
          description: Additional project images (max 5)
          type: array
          items:
            type: string
        projectTechStacks:
          description: Project tech stacks (max 10)
          type: array
          items:
            $ref: '#/components/schemas/TechStackEntity'
        projectCategories:
          description: Project categories
          type: array
          items:
            $ref: '#/components/schemas/CategoryEntity'
      required:
        - id
        - title
        - description
        - repoUrl
        - provider
        - image
        - logoUrl
        - published
        - trending
        - githubUrl
        - gitlabUrl
        - twitterUrl
        - linkedinUrl
        - discordUrl
        - websiteUrl
    TechStackEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^tst_[0-9a-fA-F]{32}$
          example: tst_c54b633eb12f4900b92b34e222096449
        name:
          type: string
          example: React
        iconUrl:
          type: string
          example: >-
            https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/react/react-original.svg
        type:
          type: string
          enum:
            - TECH
            - LANGUAGE
          example: TECH
      required:
        - id
        - name
        - iconUrl
        - type
    CategoryEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^cat_[0-9a-fA-F]{32}$
          example: cat_c54b633eb12f4900b92b34e222096449
        name:
          type: string
          example: API & Microservices
      required:
        - id
        - name

````