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

# Create a new project

> Create a new project for the authenticated user



## OpenAPI

````yaml post /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:
    post:
      tags:
        - Project
      summary: Create a new project
      description: Create a new project for the authenticated user
      operationId: ProjectController_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectDto'
            examples:
              Basic project:
                value:
                  title: My Awesome Project
                  description: A revolutionary web application
                  provider: GITHUB
              Complete project:
                value:
                  title: Full Stack App
                  description: A complete web application with modern stack
                  repoUrl: https://github.com/username/repository
                  provider: GITHUB
                  websiteUrl: https://myproject.com
                  twitterUrl: https://twitter.com/myproject
                  projectTechStacks:
                    - tst_c54b633eb12f4900b92b34e222096449
                    - tst_d54b633eb12f4900b92b34e222096450
                  projectCategories:
                    - cat_c54b633eb12f4900b92b34e222096449
      responses:
        '201':
          description: Project created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ProjectEntity'
                  timestamp:
                    type: string
                    format: date-time
                    example: '2025-09-03T13:04:43.353Z'
                required:
                  - data
                  - timestamp
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                  timestamp:
                    type: string
                    format: date-time
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                  timestamp:
                    type: string
                    format: date-time
components:
  schemas:
    CreateProjectDto:
      type: object
      properties:
        title:
          type: string
          description: Project title
          example: My Awesome Project
        description:
          type: string
          description: Project description
          example: A revolutionary web application
        repoUrl:
          type: string
          description: Repository URL
          example: https://github.com/username/repository
        provider:
          type: string
          description: Git provider
          enum:
            - GITHUB
            - GITLAB
          example: GITHUB
        githubUrl:
          type: string
          description: GitHub URL
          example: https://github.com/username/repository
        gitlabUrl:
          type: string
          description: GitLab URL
          example: https://gitlab.com/username/repository
        twitterUrl:
          type: object
          description: >-
            Twitter/X profile URL (must be from twitter.com or x.com and use
            HTTPS)
          example: https://twitter.com/project
          nullable: true
        linkedinUrl:
          type: object
          description: LinkedIn profile URL (must be from linkedin.com and use HTTPS)
          example: https://linkedin.com/company/project
          nullable: true
        discordUrl:
          type: object
          description: >-
            Discord server URL (must be from discord.com or discord.gg and use
            HTTPS)
          example: https://discord.gg/server
          nullable: true
        websiteUrl:
          type: object
          description: Project website URL (must use HTTPS)
          example: https://myproject.com
          nullable: true
        projectTechStacks:
          description: Array of project tech stack IDs (public IDs starting with tst_)
          example:
            - tst_c54b633eb12f4900b92b34e222096449
            - tst_d54b633eb12f4900b92b34e222096450
          maxItems: 10
          type: array
          items:
            type: string
        projectCategories:
          description: Array of project category IDs (public IDs starting with cat_)
          example:
            - cat_c54b633eb12f4900b92b34e222096449
            - cat_d54b633eb12f4900b92b34e222096450
          maxItems: 5
          type: array
          items:
            type: string
      required:
        - title
        - repoUrl
        - provider
    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

````