v0

v0 projects API

The projects API from v0 — 9 operation(s) for projects.

OpenAPI Specification

v0-projects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: v0 App agent projects API
  version: '0'
  description: Full stack vibe coding API
  termsOfService: https://vercel.com/legal/api-terms
servers:
- url: https://api.v0.dev/v1
tags:
- name: projects
paths:
  /chats/{chatId}/project:
    get:
      summary: Get Project by Chat ID
      description: Retrieves the v0 project associated with a given chat. Useful for determining the context or scope of a chat session.
      operationId: projects.getByChatId
      tags:
      - projects
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: A unique identifier for the project.
                  object:
                    type: string
                    const: project
                    description: Fixed value identifying this object as a project.
                  name:
                    type: string
                    description: The name of the project as defined by the user.
                  privacy:
                    type: string
                    enum:
                    - private
                    - team
                    description: The privacy setting for the project - either private or team.
                  vercelProjectId:
                    description: Optional ID of the linked Vercel project, if connected.
                    type: string
                  createdAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp representing when the project was created.
                  updatedAt:
                    description: The ISO timestamp of the most recent update, if available.
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                  apiUrl:
                    type: string
                    format: uri
                    description: The API endpoint URL for accessing this project programmatically.
                  webUrl:
                    type: string
                    format: uri
                    description: The web URL where the project can be viewed or managed.
                  description:
                    description: The description of the project.
                    type: string
                  instructions:
                    description: The instructions for the project.
                    type: string
                  chats:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for the chat.
                        object:
                          type: string
                          const: chat
                          description: Fixed value identifying this object as a chat.
                        shareable:
                          type: boolean
                          description: Indicates whether the chat can be shared via public link.
                        privacy:
                          type: string
                          enum:
                          - public
                          - private
                          - team
                          - team-edit
                          - unlisted
                          description: Defines the visibility of the chat—private, team-only, or public.
                        name:
                          description: An optional name assigned to the chat by the user.
                          type: string
                        title:
                          type: string
                          description: Deprecated title field preserved for backward compatibility.
                          deprecated: true
                        createdAt:
                          type: string
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          description: The ISO timestamp representing when the chat was created.
                        updatedAt:
                          description: The ISO timestamp of the last update to the chat.
                          type: string
                        favorite:
                          type: boolean
                          description: Indicates whether the chat is marked as a favorite.
                        authorId:
                          type: string
                          description: The ID of the user who created the chat.
                        projectId:
                          description: Optional ID of the v0 project associated with this chat.
                          type: string
                        vercelProjectId:
                          description: Optional ID of the linked Vercel project, if connected.
                          type: string
                        webUrl:
                          type: string
                          description: Web URL to view this chat in the browser.
                        apiUrl:
                          type: string
                          description: API URL to access this chat via the API.
                        latestVersion:
                          description: The most recent generated version of the chat, if available.
                          type: object
                          properties:
                            id:
                              type: string
                              description: A unique identifier for the version.
                            object:
                              type: string
                              const: version
                              description: Fixed value identifying this object as a version.
                            status:
                              type: string
                              enum:
                              - pending
                              - completed
                              - failed
                              description: The current status of the version generation process.
                            demoUrl:
                              description: Optional URL for previewing the generated output.
                              type: string
                            screenshotUrl:
                              type: string
                              description: URL to retrieve a screenshot of this version.
                            createdAt:
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                              description: The date and time when the version was created, in ISO 8601 format.
                            updatedAt:
                              description: The date and time when the version was last updated, in ISO 8601 format.
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          required:
                          - id
                          - object
                          - status
                          - createdAt
                          additionalProperties: false
                      required:
                      - id
                      - object
                      - shareable
                      - privacy
                      - createdAt
                      - favorite
                      - authorId
                      - webUrl
                      - apiUrl
                      additionalProperties: false
                      description: Summary of a chat, including metadata like privacy, author, latest version, and URLs.
                    description: List of all chats that are associated with this project.
                required:
                - id
                - object
                - name
                - privacy
                - createdAt
                - apiUrl
                - webUrl
                - chats
                additionalProperties: false
                description: Full representation of a project, including its associated chats.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      parameters:
      - name: chatId
        in: path
        required: true
        schema:
          type: string
        description: The ID of the chat to retrieve the associated project for.
      security:
      - apiKey: []
  /projects:
    get:
      summary: Find Projects
      description: Returns a list of all v0 projects in your workspace. Useful for browsing or managing projects across different chats or use cases.
      operationId: projects.find
      tags:
      - projects
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: list
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectSummary'
                required:
                - object
                - data
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      security:
      - apiKey: []
    post:
      summary: Create Project
      description: Creates a new v0 project with an optional description, icon, environment variables, and instructions. Projects help organize chats and manage context.
      operationId: projects.create
      tags:
      - projects
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 255
                  description: The name of the project.
                description:
                  description: A brief summary of the project’s purpose.
                  type: string
                  maxLength: 1000
                icon:
                  default: icon-wand-sparkles
                  description: An icon identifier to visually represent the project.
                  type: string
                environmentVariables:
                  description: A list of key-value pairs used to define runtime variables for the project.
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        maxLength: 255
                      value:
                        type: string
                        maxLength: 1000
                    required:
                    - key
                    - value
                    additionalProperties: false
                instructions:
                  description: Guidance or goals that provide context for the model when working within the project.
                  type: string
                  maxLength: 2000
                vercelProjectId:
                  description: The ID of an existing Vercel project to link to. If not provided, a new Vercel project will be created.
                  type: string
                privacy:
                  description: The privacy setting for the project. For user accounts, this is always "private". For team/enterprise accounts, this can be either "private" or "team".
                  type: string
                  enum:
                  - private
                  - team
              required:
              - name
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: A unique identifier for the project.
                  object:
                    type: string
                    const: project
                    description: Fixed value identifying this object as a project.
                  name:
                    type: string
                    description: The name of the project as defined by the user.
                  privacy:
                    type: string
                    enum:
                    - private
                    - team
                    description: The privacy setting for the project - either private or team.
                  vercelProjectId:
                    description: Optional ID of the linked Vercel project, if connected.
                    type: string
                  createdAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp representing when the project was created.
                  updatedAt:
                    description: The ISO timestamp of the most recent update, if available.
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                  apiUrl:
                    type: string
                    format: uri
                    description: The API endpoint URL for accessing this project programmatically.
                  webUrl:
                    type: string
                    format: uri
                    description: The web URL where the project can be viewed or managed.
                  description:
                    description: The description of the project.
                    type: string
                  instructions:
                    description: The instructions for the project.
                    type: string
                  chats:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for the chat.
                        object:
                          type: string
                          const: chat
                          description: Fixed value identifying this object as a chat.
                        shareable:
                          type: boolean
                          description: Indicates whether the chat can be shared via public link.
                        privacy:
                          type: string
                          enum:
                          - public
                          - private
                          - team
                          - team-edit
                          - unlisted
                          description: Defines the visibility of the chat—private, team-only, or public.
                        name:
                          description: An optional name assigned to the chat by the user.
                          type: string
                        title:
                          type: string
                          description: Deprecated title field preserved for backward compatibility.
                          deprecated: true
                        createdAt:
                          type: string
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          description: The ISO timestamp representing when the chat was created.
                        updatedAt:
                          description: The ISO timestamp of the last update to the chat.
                          type: string
                        favorite:
                          type: boolean
                          description: Indicates whether the chat is marked as a favorite.
                        authorId:
                          type: string
                          description: The ID of the user who created the chat.
                        projectId:
                          description: Optional ID of the v0 project associated with this chat.
                          type: string
                        vercelProjectId:
                          description: Optional ID of the linked Vercel project, if connected.
                          type: string
                        webUrl:
                          type: string
                          description: Web URL to view this chat in the browser.
                        apiUrl:
                          type: string
                          description: API URL to access this chat via the API.
                        latestVersion:
                          description: The most recent generated version of the chat, if available.
                          type: object
                          properties:
                            id:
                              type: string
                              description: A unique identifier for the version.
                            object:
                              type: string
                              const: version
                              description: Fixed value identifying this object as a version.
                            status:
                              type: string
                              enum:
                              - pending
                              - completed
                              - failed
                              description: The current status of the version generation process.
                            demoUrl:
                              description: Optional URL for previewing the generated output.
                              type: string
                            screenshotUrl:
                              type: string
                              description: URL to retrieve a screenshot of this version.
                            createdAt:
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                              description: The date and time when the version was created, in ISO 8601 format.
                            updatedAt:
                              description: The date and time when the version was last updated, in ISO 8601 format.
                              type: string
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          required:
                          - id
                          - object
                          - status
                          - createdAt
                          additionalProperties: false
                      required:
                      - id
                      - object
                      - shareable
                      - privacy
                      - createdAt
                      - favorite
                      - authorId
                      - webUrl
                      - apiUrl
                      additionalProperties: false
                      description: Summary of a chat, including metadata like privacy, author, latest version, and URLs.
                    description: List of all chats that are associated with this project.
                required:
                - id
                - object
                - name
                - privacy
                - createdAt
                - apiUrl
                - webUrl
                - chats
                additionalProperties: false
                description: Full representation of a project, including its associated chats.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      security:
      - apiKey: []
  /projects/{projectId}:
    get:
      summary: Get Project by ID
      description: Retrieves the details of a specific v0 project by its ID.
      operationId: projects.getById
      tags:
      - projects
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: A unique identifier for the project.
                  object:
                    type: string
                    const: project
                    description: Fixed value identifying this object as a project.
                  name:
                    type: string
                    description: The name of the project as defined by the user.
                  privacy:
                    type: string
                    enum:
                    - private
                    - team
                    description: The privacy setting for the project - either private or team.
                  vercelProjectId:
                    description: Optional ID of the linked Vercel project, if connected.
                    type: string
                  createdAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp representing when the project was created.
                  updatedAt:
                    description: The ISO timestamp of the most recent update, if available.
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                  apiUrl:
                    type: string
                    format: uri
                    description: The API endpoint URL for accessing this project programmatically.
                  webUrl:
                    type: string
                    format: uri
                    description: The web URL where the project can be viewed or managed.
                  description:
                    description: The description of the project.
                    type: string
                  instructions:
                    description: The instructions for the project.
                    type: string
                  chats:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: A unique identifier for the chat.
                        object:
                          type: string
                          const: chat
                          description: Fixed value identifying this object as a chat.
                        shareable:
                          type: boolean
                          description: Indicates whether the chat can be shared via public link.
                        privacy:
                          type: string
                          enum:
                          - public
                          - private
                          - team
                          - team-edit
                          - unlisted
                          description: Defines the visibility of the chat—private, team-only, or public.
                        name:
                          description: An optional name assigned to the chat by the user.
                          type: string
                        title:
                          type: string
                          description: Deprecated title field preserved for backward compatibility.
                          deprecated: true
                        createdAt:
                          type: string
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          description: The ISO timestamp representing when the chat was created.
                        updatedAt:
                          description: The ISO timestamp of the last update to the chat.
                          type: string
                        favorite:
                          type: boolean
                          description: Indicates whether the chat is marked as a favorite.
                        authorId:
                          type: string
                          description: The ID of the user who created the chat.
                        projectId:
                          description: Optional ID of the v0 project associated with this chat.
                          type: string
                        vercelProjectId:
                          description: Optional ID of the linked Vercel project, if connected.
                          type: string
                        webUrl:
                          type: string
                          description: Web URL to view this chat in the browser.
                        apiUrl:
                          type: string
                          description:

# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/v0/refs/heads/main/openapi/v0-projects-api-openapi.yml