Paperspace Projects API

Projects are the top-level organizing container in Paperspace. The Projects API covers project lifecycle, activity feeds, collaborator management, project-scoped secrets, tags, and model linkage.

OpenAPI Specification

paperspace-projects-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Paperspace Projects API
  version: v1
  description: |
    Projects are the top-level organizing container in Paperspace — they own
    deployments, models, secrets, tags, activity feeds, and collaborator lists.
    Authenticate with a team-scoped API key as `Authorization: Bearer
    $API_TOKEN`.
servers:
- url: https://api.paperspace.com/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Projects
- name: Collaborators
- name: Secrets
- name: Tags
- name: Activity
paths:
  /projects:
    get:
      tags: [Projects]
      operationId: listProjects
      summary: List Projects
      description: Lists projects with pagination and sorting support.
      parameters:
      - $ref: '#/components/parameters/After'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/Order'
      responses:
        '200':
          description: Project list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectList'
    post:
      tags: [Projects]
      operationId: createProject
      summary: Create Project
      description: Creates a new project with the specified name.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [name]
              properties:
                name:
                  type: string
                description:
                  type: string
      responses:
        '201':
          description: Project created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
  /projects/{id}:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Projects]
      operationId: getProject
      summary: Get Project
      description: Gets a project by its ID.
      responses:
        '200':
          description: Project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
    put:
      tags: [Projects]
      operationId: updateProject
      summary: Update Project
      description: Updates a project's name or description.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                description:
                  type: string
      responses:
        '200':
          description: Updated project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
    delete:
      tags: [Projects]
      operationId: deleteProject
      summary: Delete Project
      description: Deletes a project and its associated configuration.
      responses:
        '204':
          description: Deleted.
  /projects/{id}/activity:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Activity]
      operationId: listProjectActivity
      summary: List Project Activity
      description: Lists project activity events with filtering and pagination options.
      parameters:
      - in: query
        name: type
        schema:
          type: string
      - $ref: '#/components/parameters/After'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Activity list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActivityEvent'
  /projects/{id}/collaborators:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Collaborators]
      operationId: listProjectCollaborators
      summary: List Project Collaborators
      description: Fetches a list of collaborators for a project.
      responses:
        '200':
          description: Collaborator list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Collaborator'
    post:
      tags: [Collaborators]
      operationId: addProjectCollaborator
      summary: Add Project Collaborator
      description: Adds a new collaborator to a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [userId]
              properties:
                userId:
                  type: string
                role:
                  type: string
                  enum: [admin, member, viewer]
      responses:
        '201':
          description: Collaborator added.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collaborator'
  /projects/{id}/collaborators/{userId}:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    - in: path
      name: userId
      required: true
      schema:
        type: string
    delete:
      tags: [Collaborators]
      operationId: removeProjectCollaborator
      summary: Remove Project Collaborator
      description: Removes a collaborator from a project.
      responses:
        '204':
          description: Removed.
  /projects/{id}/secrets:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Secrets]
      operationId: listProjectSecrets
      summary: List Project Secrets
      description: Fetches a list of secrets for a project.
      responses:
        '200':
          description: Secret list (names only).
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Secret'
    post:
      tags: [Secrets]
      operationId: createProjectSecret
      summary: Create Project Secret
      description: Creates a new secret for a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretCreate'
      responses:
        '201':
          description: Secret created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
  /projects/{id}/secrets/{name}:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    - in: path
      name: name
      required: true
      schema:
        type: string
    get:
      tags: [Secrets]
      operationId: getProjectSecret
      summary: Get Project Secret
      description: Fetches a secret for a project (does not return the value).
      responses:
        '200':
          description: Secret.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
    patch:
      tags: [Secrets]
      operationId: updateProjectSecret
      summary: Update Project Secret
      description: Updates the value of a secret for a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [value]
              properties:
                value:
                  type: string
      responses:
        '200':
          description: Updated secret.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
    delete:
      tags: [Secrets]
      operationId: deleteProjectSecret
      summary: Delete Project Secret
      description: Deletes a secret from a project.
      responses:
        '204':
          description: Deleted.
  /projects/{id}/tags:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Tags]
      operationId: listProjectTags
      summary: List Project Tags
      description: Fetches a list of tags for a project.
      responses:
        '200':
          description: Tag list.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
    post:
      tags: [Tags]
      operationId: addProjectTag
      summary: Add Project Tag
      description: Adds a tag to a project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [name]
              properties:
                name:
                  type: string
      responses:
        '201':
          description: Tag added.
    delete:
      tags: [Tags]
      operationId: removeProjectTag
      summary: Remove Project Tag
      description: Removes a tag from a project by name.
      parameters:
      - in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Removed.
  /projects/{id}/models:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    get:
      tags: [Projects]
      operationId: listProjectModels
      summary: List Project Models
      description: Fetches a list of models for a project.
      responses:
        '200':
          description: Model list.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
  /projects/{id}/models/{modelId}:
    parameters:
    - $ref: '#/components/parameters/ProjectId'
    - in: path
      name: modelId
      required: true
      schema:
        type: string
    post:
      tags: [Projects]
      operationId: addProjectModel
      summary: Add Model to Project
      description: Associates an existing model with a project.
      responses:
        '201':
          description: Linked.
    delete:
      tags: [Projects]
      operationId: removeProjectModel
      summary: Remove Model From Project
      description: Removes a model from a project.
      responses:
        '204':
          description: Removed.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: api-key
  parameters:
    ProjectId:
      in: path
      name: id
      required: true
      schema:
        type: string
    After:
      in: query
      name: after
      schema:
        type: string
    Limit:
      in: query
      name: limit
      schema:
        type: integer
    OrderBy:
      in: query
      name: orderBy
      schema:
        type: string
    Order:
      in: query
      name: order
      schema:
        type: string
        enum: [asc, desc]
  schemas:
    Project:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        teamId:
          type: string
        dtCreated:
          type: string
          format: date-time
    ProjectList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Project'
        hasMore:
          type: boolean
        nextPage:
          type: string
    Collaborator:
      type: object
      properties:
        userId:
          type: string
        email:
          type: string
        role:
          type: string
        projectId:
          type: string
    Secret:
      type: object
      properties:
        name:
          type: string
        dtCreated:
          type: string
          format: date-time
        dtModified:
          type: string
          format: date-time
    SecretCreate:
      type: object
      required: [name, value]
      properties:
        name:
          type: string
        value:
          type: string
    ActivityEvent:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        message:
          type: string
        userId:
          type: string
        dtCreated:
          type: string
          format: date-time