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

# Create a switchover

>         Moves the primary of a Postgres branch.

        On a branch with replicas the primary steps down and a replica is
        promoted in its place. A branch running a single instance has nothing to
        promote, so that instance is restarted where it stands and the branch is
        unreachable while it comes back. Read `method` on the response to see
        which one the branch got.

        A branch accepts one switchover at a time. A switchover that ends in the
        `failed` state has an unconfirmed outcome: the primary may still have
        moved, and nothing is rolled back.

### Authorization
A service token or OAuth token must have at least one of the following access or scopes in order to use this API endpoint:

**Service Token Accesses**
 `write_database`

**OAuth Scopes**

 | Resource | Scopes |
| :------- | :---------- |
| Organization | `write_databases` |
| Database | `write_database` |



## OpenAPI

````yaml post /organizations/{organization}/databases/{database}/branches/{branch}/switchovers
openapi: 3.0.1
info:
  title: PlanetScale API
  description: |-

    <p>PlanetScale API</p>
    &copy; 2026 PlanetScale, Inc.
  version: v1
  x-copyright: '&copy; 2026 PlanetScale, Inc.'
servers:
  - url: https://api.planetscale.com/v1
security:
  - oauth2: []
tags:
  - name: BackupPolicies
    description: |2
                Resources for managing database backup policies.
  - name: Backups
    description: |2
                Resources for managing database branch backups.
  - name: Branch changes
    description: |2
                Resources for managing cluster changes.
  - name: Branch config changes
    description: |2
                Resources for managing branch-level configuration change requests.
  - name: Cluster extensions
    description: |2
                Resources for managing cluster extension configuration.
  - name: Branch log signatures
    description: |2
                Resources for retrieving branch log access signatures.
  - name: Cluster parameters
    description: |2
                Resources for managing cluster configuration parameters.
  - name: Branch Vitess parameters
    description: |2
                Returns all editable Vitess parameter definitions with their current effective values for a branch.
  - name: Database branch keyspaces
    description: |2
                Resources for managing keyspaces.
  - name: Database branch passwords
    description: |2
                Resources for managing database branch passwords.
  - name: Database Postgres IP restrictions
    description: |2
                Resources for managing Postgres IP restriction entries for databases.

                Note: This endpoint is only available for PostgreSQL databases. For MySQL databases, use the Database Branch Passwords endpoint.
  - name: Databases
    description: |2
                  Resources for managing databases within an organization.
  - name: InsightsAgentRuns
    description: |2
                Resources for running and viewing Insights agent analyses.
  - name: Insights Agent schedules
    description: Resources for managing Insights Agent schedules.
  - name: Keyspace config changes
    description: |2
                Resources for managing keyspace-level configuration change requests.
  - name: Keyspace resizes
    description: |2
                Resources for managing keyspace resize requests.
  - name: Keyspace VSchemas
    description: |2
                Resources for managing VSchemas within a keyspace.
  - name: MaintenanceEvents
    description: |2
                Resources for viewing scheduled maintenance for Postgres databases.
  - name: MaintenanceSchedules
    description: |2
                Resources for viewing database maintenance schedules for Vitess databases (Enterprise only).
  - name: MaintenanceWindows
    description: |2
                Resources for viewing maintenance windows for a Vitess database (Enterprise only).
  - name: Metrics
    description: |2
                Resources for retrieving database metrics.
  - name: MoveTables
    description: |2
                API endpoints for creating and managing Vitess MoveTables workflows on a branch.
  - name: OAuth applications
    description: |2
                Resources for managing OAuth applications.
  - name: OAuth tokens
    description: |2
                Resources for managing OAuth tokens.
  - name: Organization invitations
    description: |2
                Resources for inviting people to an organization. Service tokens with `write_members` can list, send, and cancel invitations, but can only invite people as members. Only organization administrators can invite people as administrators or analysts.
  - name: Organization members
    description: |2
                Resources for managing organization members and their roles.
  - name: Organizations
    description: |2
                  Resources for managing organizations.
  - name: Bouncer resizes
    description: |2
                Resources for managing Postgres bouncer resize requests.
  - name: Bouncers
    description: |2
                Resources for managing postgres bouncers.
  - name: Switchovers
    description: |2
                Resources for moving the primary of a Postgres branch.
  - name: QueryPatternComments
    description: |2
                Comments attached to an Insights query pattern.
  - name: Query Insights reports
    description: |2
                Resources for downloading query insights data.
  - name: Dedicated read replica detachments
    description: |2
                Resources for detaching Postgres dedicated read replicas.
  - name: Dedicated read replicas
    description: |2
                Resources for managing Postgres dedicated read replicas.
  - name: Roles
    description: |2
                Resources for managing role credentials.
  - name: Schema recommendations
    description: |2
                Resources for managing schema recommendations within a database.
  - name: Service tokens
    description: |2
                API endpoints for managing service tokens within an organization.
  - name: Shard config changes
    description: |2
                Resources for managing shard-level configuration change requests.
                Only available for custom-sharded keyspaces.
  - name: Traffic budgets
    description: |2
                Resources for managing traffic budgets.
  - name: Traffic rules
    description: |2
                Resources for managing traffic rules for a traffic budget.
  - name: Users
    description: |2
                Resources for managing users.
  - name: VtctldOperations
    description: |2
                API endpoints for checking the result of asynchronous vtctld operations, such as MoveTables commands.
  - name: Deploy requests
    description: |2
                  Resources for managing deploy requests.
  - name: Webhooks
    description: |2
                  Resources for managing database webhooks.
  - name: AuthAttemptExports
    description: |2
                  Resources for creating and downloading organization auth attempt exports.
  - name: Billing payment method setup
    description: |2
                  Resources for adding an organization's payment method through hosted checkout.
  - name: Billing payment method
    description: |2
                  Resources for managing an organization's payment method.
  - name: Invoices
    description: |2
                  Resources for managing invoices.
  - name: Organization SSO domains
    description: |2
                  Resources for listing and verifying organization email domains used for SSO.
  - name: Organization SSO
    description: |2
                  Resources for enabling SSO, verifying email domains, and configuring an identity provider.
  - name: Team members
    description: |2
                  Resources for managing team memberships within an organization. Team members inherit access to databases assigned to their team.

                  Note: Teams managed through SSO/directory services cannot have members added or removed via API.
  - name: Organization teams
    description: |2
                  Resources for managing teams within an organization. Teams allow you to group members and grant them access to specific databases.

                  Note: Teams managed through SSO/directory services cannot be modified via API.
paths:
  /organizations/{organization}/databases/{database}/branches/{branch}/switchovers:
    post:
      tags:
        - Switchovers
      summary: Create a switchover
      description: >2-
                Moves the primary of a Postgres branch.

                On a branch with replicas the primary steps down and a replica is
                promoted in its place. A branch running a single instance has nothing to
                promote, so that instance is restarted where it stands and the branch is
                unreachable while it comes back. Read `method` on the response to see
                which one the branch got.

                A branch accepts one switchover at a time. A switchover that ends in the
                `failed` state has an unconfirmed outcome: the primary may still have
                moved, and nothing is rolled back.

        ### Authorization

        A service token or OAuth token must have at least one of the following
        access or scopes in order to use this API endpoint:


        **Service Token Accesses**
         `write_database`

        **OAuth Scopes**

         | Resource | Scopes |
        | :------- | :---------- |

        | Organization | `write_databases` |

        | Database | `write_database` |
      operationId: create_switchover
      parameters:
        - name: organization
          in: path
          required: true
          description: 'Organization name slug from `list_organizations`. Example: `acme`.'
          schema:
            type: string
        - name: database
          in: path
          required: true
          description: 'Database name slug from `list_databases`. Example: `app-db`.'
          schema:
            type: string
        - name: branch
          in: path
          required: true
          description: 'Branch name from `list_branches`. Example: `main`.'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                candidate:
                  type: string
                  description: >-
                    The exact `name` of the replica returned by the branch's
                    Postgres infrastructure endpoint to promote. Omit to let the
                    operator select an eligible replica. Only applies to
                    branches with replicas.
      responses:
        '201':
          description: Returns the new switchover
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The ID of the switchover
                  state:
                    type: string
                    enum:
                      - pending
                      - running
                      - succeeded
                      - failed
                      - canceled
                    description: The state of the switchover
                  method:
                    type: string
                    enum:
                      - switchover
                      - restart
                    description: >-
                      How the primary was moved. `switchover` promotes a replica
                      on a highly available branch; `restart` restarts the
                      single instance of a branch that has no replicas. Absent
                      until the operator selects one.
                    nullable: true
                  error:
                    type: string
                    description: >-
                      Why the switchover failed. A failed switchover has an
                      unconfirmed outcome and does not imply the primary stayed
                      put.
                    nullable: true
                  started_at:
                    type: string
                    description: When the switchover was requested
                    nullable: true
                  completed_at:
                    type: string
                    description: When the switchover finished
                    nullable: true
                  created_at:
                    type: string
                    description: When the switchover was created
                  updated_at:
                    type: string
                    description: When the switchover was last updated
                  actor:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The ID of the actor
                      display_name:
                        type: string
                        description: The name of the actor
                      avatar_url:
                        type: string
                        description: The URL of the actor's avatar
                    required:
                      - id
                      - display_name
                      - avatar_url
                required:
                  - id
                  - state
                  - started_at
                  - completed_at
                  - created_at
                  - updated_at
                  - actor
        '400':
          description: 'bad request: candidate must be a string'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: 'unprocessable: the branch cannot accept a switchover right now'
        '429':
          description: >-
            Too Many Requests. Reduce the frequency of requests and try again
            soon.
        '500':
          description: Internal Server Error
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.planetscale.com/oauth/authorize
          tokenUrl: https://auth.planetscale.com/oauth/token
          scopes:
            email: Read user email
            openid: OpenID Connect scope
            profile: Read user profile
            read_databases: Read organization databases
            read_user: Read user
            read_organization: Read organization
            write_databases: Write organization databases
            write_user: Write user
            write_organization: Write organization
            branch:delete_backups: Delete backups
            branch:delete_branch: Delete a database branch
            branch:manage_passwords: Read, write, and delete branch passwords
            branch:manage_read_only_passwords: Read, write, and delete read only branch passwords
            branch:manage_topology: Manage shard primaries and tablet serving for this branch
            branch:read_backups: Read backups
            branch:read_branch: Read a database branch
            branch:restore_backups: Restore this branch's backups to new branches
            branch:write_backups: Create and update backups
            branch:write_branch: Write a database branch
            database:approve_deploy_requests: Approve deploy requests in a database
            database:delete_backups: Delete backups
            database:delete_branches: Delete database branches
            database:delete_database: Delete a database
            database:delete_members: Delete members
            database:delete_production_branch_backups: Delete production backups
            database:delete_production_branches: Delete a production database branch
            database:demote_branches: Demote production database branches
            database:deploy_deploy_requests: Deploy deploy requests in a database
            database:manage_branch_topologies: >-
              Manage shard primaries and tablet serving for development branches
              in a database
            database:manage_passwords: Read, write, and delete database branch passwords
            database:manage_production_branch_passwords: Read, write, and delete production branch passwords
            database:manage_production_branch_topologies: >-
              Manage shard primaries and tablet serving for production branches
              in a database
            database:manage_production_read_only_passwords: >-
              Read, write, and delete production read only branch passwords in
              an organization
            database:manage_read_only_passwords: >-
              Read, write, and delete read only branch passwords in an
              organization
            database:promote_branches: Promote database branches
            database:read_backups: Read backups
            database:read_branches: Read database branches
            database:read_comments: Read deploy request comments in a database
            database:read_database: Read database information
            database:read_deploy_requests: Read deploy requests in a database
            database:read_members: Read members
            database:read_workflows: Read database workflows
            database:restore_backups: Restore backups to new branches
            database:restore_production_branch_backups: Restore production branch backups to new branches
            database:write_backups: Create and update backups
            database:write_branches: Write database branches
            database:write_comments: Create deploy request comments in a database
            database:write_database: Write database
            database:write_deploy_requests: Create and update deploy requests in a database
            database:write_members: Write members
            database:write_workflows: Create and manage database workflows
            organization:approve_deploy_requests: Approve deploy requests in an organization
            organization:create_databases: Create organization databases
            organization:delete_backups: Delete backups in an organization
            organization:delete_branches: Delete branches in an organization
            organization:delete_databases: Delete organization databases
            organization:delete_members: Delete members in an organization
            organization:delete_organization: Delete organization
            organization:delete_production_branch_backups: Delete production backups in an organization
            organization:delete_production_branches: Delete a production branch in an organization
            organization:deploy_deploy_requests: Deploy deploy requests in an organization
            organization:manage_branch_topologies: >-
              Manage shard primaries and tablet serving for development branches
              in an organization
            organization:manage_passwords: Read, write, and delete branch passwords in an organization
            organization:manage_production_branch_passwords: >-
              Read, write, and delete production branch passwords in an
              organization
            organization:manage_production_branch_topologies: >-
              Manage shard primaries and tablet serving for production branches
              in an organization
            organization:manage_production_read_only_passwords: >-
              Read, write, and delete production read only branch passwords in
              an organization
            organization:manage_read_only_passwords: >-
              Read, write, and delete read only branch passwords in an
              organization
            organization:manage_sso: Enable, configure, and disable organization SSO
            organization:promote_branches: Promote branches in an organization
            organization:read_audit_logs: Read organization audit logs
            organization:read_backups: Read backups in an organization
            organization:read_branches: Read branches in an organization
            organization:read_comments: Read deploy request comments in an organization
            organization:read_databases: Read organization databases
            organization:read_deploy_requests: Read deploy requests in an organization
            organization:read_invoices: Read organization invoices
            organization:read_members: Read members in an organization
            organization:read_organization: Read organization
            organization:read_payment_method: Read organization payment method
            organization:read_workflows: Read workflows in an organization
            organization:restore_backups: Restore backups to new branches in an organization
            organization:restore_production_branch_backups: >-
              Restore production branch backups to new branches in an
              organization
            organization:write_backups: Create and update backups in an organization
            organization:write_branches: Write branches in an organization
            organization:write_comments: Create deploy request comments in an organization
            organization:write_databases: Write organization databases
            organization:write_deploy_requests: Create and update deploy requests in an organization
            organization:write_members: Write members in an organization
            organization:write_organization: Write organization
            organization:write_payment_method: Update and delete the organization payment method
            organization:write_workflows: Create and manage workflows in an organization
            user:read_organizations: Read a user's organizations
            user:read_user: Read user
            user:write_user: Write user

````

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