> ## Documentation Index
> Fetch the complete documentation index at: https://paper.brimble.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Redeploy a project

> Redeploys the project. With an empty body it rebuilds the latest commit. Send `logId` to redeploy the commit of an earlier deployment (rollback), or `startOnly: true` to restart without rebuilding. Including `name` together with build settings updates the project settings before redeploying.

**API key scope:** `project.deploy`

**Team role permission:** `project.deploy`



## OpenAPI

````yaml /api-reference/core.openapi.yaml post /v1/projects/{projectId}/redeploy
openapi: 3.0.3
info:
  title: Brimble API
  version: 1.0.0
  description: >
    The Brimble API lets you deploy and manage projects, databases, domains,
    sandboxes, object storage and more.


    ## Base URL


    All endpoints are relative to `https://api.brimble.io/core`, for example
    `GET https://api.brimble.io/core/v1/projects`.


    ## Authentication


    Create an API key in the dashboard under **Settings → API keys** and send it
    in the `x-brimble-key` header:


    ```

    x-brimble-key: <your API key>

    ```


    Each API key carries permission scopes such as `project.read` or
    `project.deploy`. Every endpoint lists the scope it needs; a key without
    that scope gets `403`. Dashboard session tokens (`Authorization: Bearer
    <token>`) are also accepted, but integrations should use API keys.


    ## Teams


    Endpoints act on your personal workspace unless you pass a team. Most
    endpoints accept `teamId` (as a query parameter, or in the body for writes).
    API keys created for a team act in that team. Inside a team, your team role
    must also allow the action; each endpoint lists the team permission it
    checks.


    ## Responses


    Successful responses are JSON with this shape:


    ```json

    { "message": "Projects fetched", "data": { } }

    ```


    Errors return a `message`:


    ```json

    { "message": "Project not found", "data": {} }

    ```


    Requests that fail validation return `400` with every invalid field:


    ```json

    { "errors": [{ "type": "field", "msg": "Project name should be provided",
    "path": "name", "location": "body" }] }

    ```


    ## Rate limits


    Requests made with an API key are rate limited. Responses include
    `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` and
    `X-RateLimit-Bucket`. Command execution and file transfer endpoints use
    separate buckets.


    ## Idempotency


    Endpoints that accept an `Idempotency-Key` header return the original result
    when retried with the same key and body, instead of repeating the operation.


    ## Streaming


    Command execution endpoints can stream output as Server-Sent Events
    (`text/event-stream`). Each event is `data: <json>` where the JSON has a
    `type` of `stdout`, `stderr`, `done` or `error`.


    ## Webhooks


    To receive events instead of polling, configure a webhook with `PATCH
    /v1/webhooks`. See the [Webhooks guide](/webhooks/overview) and the [Webhook
    events reference](/webhooks/events) for every payload.
  contact:
    name: Brimble
    url: https://brimble.io
servers:
  - url: https://api.brimble.io/core
    description: Production
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Projects
    description: Create, deploy, configure and manage projects.
  - name: Deployments and Logs
    description: Deployment history, build logs and request logs.
  - name: Environments
    description: Project environments (production, staging, previews) and their variables.
  - name: Secrets
    description: >-
      Secrets (environment variables) set on a single project. Not to be
      confused with Environments, which group projects into production, staging
      and preview.
  - name: Webhooks
    description: >-
      Receive events from Brimble at your own endpoint (or a Discord or Slack
      channel). Configure the destination and events with `PATCH /v1/webhooks`;
      use `*` to receive every event.


      See the [Webhooks guide](/webhooks/overview) for setup, and the [Webhook
      events reference](/webhooks/events) for the payload each event delivers.


      | Event | Sent when |

      | --- | --- |

      | `project.created` | A project is created |

      | `project.updated` | A project is updated |

      | `project.deleted` | A project is deleted |

      | `project.domain.updated` | A project domain changes |

      | `deployment.created` | A deployment is queued |

      | `deployment.started` | A deployment starts |

      | `deployment.success` | A deployment succeeds |

      | `deployment.failed` | A deployment fails |

      | `environment.variables.added` | Environment variables are added |

      | `environment.variables.updated` | Environment variables are updated |

      | `environment.variables.deleted` | Environment variables are deleted |

      | `domain.created` | A domain is added |

      | `domain.purchased` | A domain is purchased |

      | `domain.renewed` | A domain is renewed |

      | `domain.expired` | A domain expires |

      | `dns.record.created` | A DNS record is created |

      | `dns.record.updated` | A DNS record is updated |

      | `dns.record.deleted` | A DNS record is deleted |

      | `database.created` | A database is created |

      | `database.backup.completed` | A database backup completes |

      | `autoscaling.group.created` | An autoscaling rule is created |

      | `autoscaling.group.updated` | An autoscaling rule is updated |

      | `autoscaling.group.deleted` | An autoscaling rule is deleted |

      | `payment.successful` | A payment succeeds |

      | `payment.failed` | A payment fails |


      Test deliveries sent with `POST /v1/webhooks/test` include the header
      `X-Brimble-Test: true`.
  - name: Git Providers
    description: Connected git accounts, repositories and linking repositories to projects.
  - name: Domains
    description: Custom domains, DNS records and domain registration.
  - name: Databases
    description: 'Managed databases: provisioning, backups, users and linking to projects.'
  - name: Log Drains
    description: Stream logs to external destinations.
  - name: Sandboxes
    description: Isolated sandboxes for running code, with files and snapshots.
  - name: Object Storage
    description: S3-compatible buckets, objects and credentials.
  - name: Scaling and Networking
    description: Autoscaling rules, networking and CDN cache, and rate limits.
  - name: Teams
    description: Teams, members, invitations and roles.
  - name: Catalog
    description: Regions, frameworks and plans. No authentication required.
paths:
  /v1/projects/{projectId}/redeploy:
    post:
      tags:
        - Projects
      summary: Redeploy a project
      description: >-
        Redeploys the project. With an empty body it rebuilds the latest commit.
        Send `logId` to redeploy the commit of an earlier deployment (rollback),
        or `startOnly: true` to restart without rebuilding. Including `name`
        together with build settings updates the project settings before
        redeploying.


        **API key scope:** `project.deploy`


        **Team role permission:** `project.deploy`
      operationId: redeployProject
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-fA-F0-9]{24}$
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                healthCheckPath:
                  type: string
                authEnabled:
                  type: boolean
                  default: false
                public:
                  type: boolean
                deleteVolume:
                  type: boolean
                http2:
                  type: boolean
                buildHealthCheck:
                  type: boolean
                preStartCommand:
                  type: string
                dockerfile:
                  type: string
                runtimeVersions:
                  type: object
                  properties:
                    node:
                      type: string
                      nullable: true
                    python:
                      type: string
                      nullable: true
                    go:
                      type: string
                      nullable: true
                    php:
                      type: string
                      nullable: true
                    java:
                      type: string
                      nullable: true
                    ruby:
                      type: string
                      nullable: true
                    dotnet:
                      type: string
                      nullable: true
                    deno:
                      type: string
                      nullable: true
                    rust:
                      type: string
                      nullable: true
                    elixir:
                      type: string
                      nullable: true
                    erlang:
                      type: string
                      nullable: true
                    gleam:
                      type: string
                      nullable: true
                watchPaths:
                  type: array
                  items:
                    type: string
                configurations:
                  type: object
                  properties:
                    cpu:
                      type: number
                    memory:
                      type: number
                    storage:
                      type: number
                    region:
                      type: string
                      nullable: true
                  required:
                    - cpu
                    - memory
                    - storage
                diskSize:
                  type: integer
                  minimum: 10
                  maximum: 150
                volumeId:
                  type: string
                  pattern: ^[a-fA-F0-9]{24}$
                mountPath:
                  type: string
                autoscalingGroup:
                  type: string
                  nullable: true
                serviceType:
                  enum:
                    - web-service
                    - static
                    - mcp
                    - worker
                  type: string
                cronEnabled:
                  type: boolean
                cronExpression:
                  type: string
                cronTimezone:
                  type: string
                cronCommand:
                  type: string
                sendReport:
                  type: boolean
                logId:
                  type: string
                  pattern: ^[a-fA-F0-9]{24}$
                  description: Redeploy the commit from this earlier deployment.
                buildCacheEnabled:
                  type: boolean
                  nullable: true
                installCommand:
                  type: string
                  nullable: true
                buildCommand:
                  type: string
                  nullable: true
                startCommand:
                  type: string
                  nullable: true
                outputDirectory:
                  type: string
                  nullable: true
                rootDirectory:
                  type: string
                  nullable: true
                framework:
                  type: string
                  nullable: true
                repo:
                  allOf:
                    - $ref: '#/components/schemas/RepoType'
                  nullable: true
                name:
                  type: string
                  description: >-
                    Project name. When present, the other settings in the body
                    are saved to the project before redeploying.
                specs:
                  allOf:
                    - $ref: '#/components/schemas/ComputeConfigurations'
                  nullable: true
                startOnly:
                  type: boolean
                  description: Restart the current build without rebuilding.
      responses:
        '200':
          description: Operation success
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - data
                properties:
                  message:
                    type: string
                    example: Operation success
                  data:
                    oneOf:
                      - type: object
                        properties:
                          id: {}
                          logId: {}
                        required:
                          - id
                          - logId
                      - type: object
                        properties:
                          id: {}
                          name:
                            type: string
                          logId:
                            nullable: true
                          status:
                            nullable: true
                        required:
                          - id
                          - name
                      - type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/ObjectId'
                          sendReport:
                            type: boolean
                        required:
                          - id
                          - sendReport
                      - type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/ObjectId'
                          sendReport:
                            nullable: true
                        required:
                          - id
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    RepoType:
      type: object
      properties:
        id:
          oneOf:
            - type: string
            - type: number
          nullable: true
        name:
          type: string
        branch:
          type: string
        installationId:
          oneOf:
            - type: string
            - type: number
          nullable: true
        git:
          type: string
          enum:
            - GITHUB
            - GITLAB
            - BITBUCKET
            - DOCKER
            - ORIGIN
          nullable: true
      required:
        - name
        - branch
    ComputeConfigurations:
      type: object
      properties:
        cpu:
          type: number
        memory:
          type: number
        storage:
          type: number
        region:
          type: string
          nullable: true
      required:
        - cpu
        - memory
        - storage
    ObjectId:
      type: string
      pattern: ^[a-fA-F0-9]{24}$
      example: 6a81bed11470bfcd2a5dbcfa
    ValidationErrorResponse:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                example: field
              value: {}
              msg:
                type: string
                example: Invalid value
              path:
                type: string
                example: name
              location:
                type: string
                enum:
                  - body
                  - query
                  - params
                  - headers
                  - cookies
    ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          example: Project not found
        data:
          type: object
          example: {}
  responses:
    ValidationError:
      description: Request validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
    Unauthorized:
      description: Missing, invalid or expired credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: >-
        The API key lacks the required scope, your team role lacks the
        permission, or the feature is not available on your account
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServerError:
      description: Unexpected server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-brimble-key
      description: >-
        API key created in the dashboard under Settings → API keys. Each key
        carries permission scopes; every endpoint lists the scope it needs.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Dashboard session token. Use an API key for integrations.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.