Cockroach Labs Physical Cluster Replication API

The Physical Cluster Replication API from Cockroach Labs — 2 operation(s) for physical cluster replication.

Operations 4

GET /api/v1/physical-replication-streams List physical replication streams #
POST /api/v1/physical-replication-streams Create a physical replication stream #
GET /api/v1/physical-replication-streams/{id} Get a physical replication stream #
PATCH /api/v1/physical-replication-streams/{id} Update a physical replication stream #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cockroach-labs:cockroach-labs-physical-cluster-replication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cockroach-labs-physical-cluster-replication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@cockroachlabs.com
    name: Cockroach Labs Support
    url: https://support.cockroachlabs.com
  description: An API for managing CockroachDB Cloud resources
  title: CockroachDB Cloud Physical Cluster Replication API
  version: '2026-09-15'
servers:
- url: https://cockroachlabs.cloud
security:
- Bearer: []
tags:
- name: Physical Cluster Replication
paths:
  /api/v1/physical-replication-streams:
    get:
      operationId: CockroachCloud_ListPhysicalReplicationStreams
      summary: List physical replication streams
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER

        - CLUSTER_DEVELOPER'
      parameters:
      - name: primary_cluster_id
        in: query
        description: 'primary_cluster_id, if set, will cause only replication streams

          with this cluster as the primary to be returned.'
        schema:
          type: string
      - name: standby_cluster_id
        in: query
        description: 'standby_cluster_id, if set, will cause only replication streams

          with this cluster as the standby to be returned.'
        schema:
          type: string
      - name: cluster_id
        in: query
        description: 'cluster_id, if set, will cause replication streams with this

          cluster as the primary or the standby to be returned.'
        schema:
          type: string
      - name: show_completed
        in: query
        description: 'show_completed specifies whether or not replication streams in the

          completed state are shown.'
        schema:
          type: boolean
      - name: pagination.page
        in: query
        schema:
          type: string
      - name: pagination.limit
        in: query
        schema:
          type: integer
          format: int32
      - name: pagination.as_of_time
        in: query
        schema:
          type: string
          format: date-time
      - name: pagination.sort_order
        in: query
        description: " - ASC: Sort in ascending order. This is the default unless otherwise specified.\n - DESC: Sort in descending order."
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhysicalReplicationStreamList'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Physical Cluster Replication
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url 'https://cockroachlabs.cloud/api/v1/physical-replication-streams?primary_cluster_id=SOME_STRING_VALUE&standby_cluster_id=SOME_STRING_VALUE&cluster_id=SOME_STRING_VALUE&show_completed=SOME_BOOLEAN_VALUE&pagination.page=SOME_STRING_VALUE&pagination.limit=SOME_INTEGER_VALUE&pagination.as_of_time=SOME_STRING_VALUE&pagination.sort_order=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
    post:
      operationId: CockroachCloud_CreatePhysicalReplicationStream
      summary: Create a physical replication stream
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePhysicalReplicationStreamRequest'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhysicalReplicationStream'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Physical Cluster Replication
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url https://cockroachlabs.cloud/api/v1/physical-replication-streams \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --json '{\"primary_cluster_id\":\"string\",\"standby_cluster_id\":\"string\"}'"
  /api/v1/physical-replication-streams/{id}:
    get:
      operationId: CockroachCloud_GetPhysicalReplicationStream
      summary: Get a physical replication stream
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN

        - CLUSTER_OPERATOR_WRITER

        - CLUSTER_DEVELOPER'
      parameters:
      - name: id
        in: path
        description: id is the ID of the replication stream to get.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhysicalReplicationStream'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Physical Cluster Replication
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request GET \\\n  --url https://cockroachlabs.cloud/api/v1/physical-replication-streams/{id} \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
    patch:
      operationId: CockroachCloud_UpdatePhysicalReplicationStream
      summary: Update a physical replication stream
      description: 'Can be used by the following roles assigned at the organization, folder or cluster scope:

        - CLUSTER_ADMIN'
      parameters:
      - name: id
        in: path
        description: id is the ID of the replication stream to update.
        required: true
        schema:
          type: string
      requestBody:
        description: 'spec contains the information that is being updated for the given

          replication stream.'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePhysicalReplicationStreamSpec'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhysicalReplicationStream'
        '400':
          description: Returned when a request field is invalid.
          content:
            application/json:
              schema: {}
        '401':
          description: Returned when the token bearer cannot be authenticated.
          content:
            application/json:
              schema: {}
        '403':
          description: Returned when the user does not have permission to access the resource.
          content:
            application/json:
              schema: {}
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema: {}
        '500':
          description: Server error
          content:
            application/json:
              schema: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      tags:
      - Physical Cluster Replication
      x-badges:
      - color: blue
        label: PREVIEW
      x-codeSamples:
      - lang: Shell + Curl
        source: "curl --request PATCH \\\n  --url https://cockroachlabs.cloud/api/v1/physical-replication-streams/{id} \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --json '{\"failover_at\":\"2006-01-03T15:04:05Z\",\"status\":\"FAILING_OVER\"}'"
components:
  schemas:
    Any:
      description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nIn its binary encoding, an `Any` is an ordinary message; but in other wire\nforms like JSON, it has a special encoding. The format of the type URL is\ndescribed on the `type_url` field.\n\nProtobuf APIs provide utilities to interact with `Any` values:\n\n- A 'pack' operation accepts a message and constructs a generic `Any` wrapper\n  around it.\n- An 'unpack' operation reads the content of an `Any` message, either into an\n  existing message or a new one. Unpack operations must check the type of the\n  value they unpack against the declared `type_url`.\n- An 'is' operation decides whether an `Any` contains a message of the given\n  type, i.e. whether it can 'unpack' that type.\n\nThe JSON format representation of an `Any` follows one of these cases:\n\n- For types without special-cased JSON encodings, the JSON format\n  representation of the `Any` is the same as that of the message, with an\n  additional `@type` field which contains the type URL.\n- For types with special-cased JSON encodings (typically called 'well-known'\n  types, listed in https://protobuf.dev/programming-guides/json/#any), the\n  JSON format representation has a key `@type` which contains the type URL\n  and a key `value` which contains the JSON-serialized value.\n\nThe text format representation of an `Any` is like a message with one field\nwhose name is the type URL in brackets. For example, an `Any` containing a\n`foo.Bar` message may be written `[type.googleapis.com/foo.Bar] { a: 2 }`."
      type: object
      properties:
        '@type':
          description: 'Identifies the type of the serialized Protobuf message with a URI reference

            consisting of a prefix ending in a slash and the fully-qualified type name.


            Example: type.googleapis.com/google.protobuf.StringValue


            This string must contain at least one `/` character, and the content after

            the last `/` must be the fully-qualified name of the type in canonical

            form, without a leading dot. Do not write a scheme on these URI references

            so that clients do not attempt to contact them.


            The prefix is arbitrary and Protobuf implementations are expected to

            simply strip off everything up to and including the last `/` to identify

            the type. `type.googleapis.com/` is a common default prefix that some

            legacy implementations require. This prefix does not indicate the origin of

            the type, and URIs containing it are not expected to respond to any

            requests.


            All type URL strings must be legal URI references with the additional

            restriction (for the text format) that the content of the reference

            must consist only of alphanumeric characters, percent-encoded escapes, and

            characters in the following set (not including the outer backticks):

            `/-.~_!$&()*+,;=`. Despite our allowing percent encodings, implementations

            should not unescape them to prevent confusion with existing parsers. For

            example, `type.googleapis.com%2FFoo` should be rejected.


            In the original design of `Any`, the possibility of launching a type

            resolution service at these type URLs was considered but Protobuf never

            implemented one and considers contacting these URLs to be problematic and

            a potential security issue. Do not attempt to contact type URLs.'
          type: string
      additionalProperties: {}
    UpdatePhysicalReplicationStreamSpec:
      type: object
      properties:
        failover_at:
          description: 'failover_at is the crdb system time at which failover occurs. If the user

            sets the status to ''FAILING_OVER'' but omits failover_at, the failover time

            will default to the latest consistent replicated time. Otherwise, the user

            can pick a time up to one hour in the future to schedule a failover, or a

            time in the past to restore the cluster to a recent state. If the

            time is in the past, the API will make a best-effort attempt to

            validate that the time is not earlier than the retained time. In

            this case, if the retained time is updated in between validation

            and failover execution and the failover time becomes invalid, the

            stream will failover to the retained time. failover_at is not required

            when updating the status to ''CANCELED''.'
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/ReplicationStreamStatus.Type'
      example:
        failover_at: '2006-01-03T15:04:05Z'
        status: FAILING_OVER
    Status:
      type: object
      properties:
        code:
          type: integer
          format: int32
        details:
          type: array
          items:
            $ref: '#/components/schemas/Any'
        message:
          type: string
    ReplicationStreamStatus.Type:
      description: "status describes the desired status of the replication stream.\n\n - STARTING: signifies that a stream is starting\n - REPLICATING: during an update request, status 'REPLICATING' is allowed to transition to 'FAILING_OVER' or 'CANCELED'.\nOther status transitions are not supported.\n - FAILING_OVER: used to trigger a failover, or to signify that a failover is occurring.\n - COMPLETED: signifies that a failover is complete.\n - CANCELED: signifies that a stream is canceled."
      type: string
      enum:
      - STARTING
      - REPLICATING
      - FAILING_OVER
      - COMPLETED
      - CANCELED
    PhysicalReplicationStreamList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/KeysetPaginationResponse'
        physical_replication_streams:
          description: physical_replication_streams is a list of PhysicalReplicationStreams.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalReplicationStream'
      required:
      - physical_replication_streams
    CreatePhysicalReplicationStreamRequest:
      type: object
      properties:
        primary_cluster_id:
          description: 'primary_cluster_id is the ID of the cluster that is being

            replicated.'
          type: string
        standby_cluster_id:
          description: standby_cluster_id is the ID of the cluster that data is being replicated to.
          type: string
      required:
      - primary_cluster_id
      - standby_cluster_id
    PhysicalReplicationStream:
      type: object
      properties:
        activated_at:
          description: 'activated_at is the crdb system time at which failover is

            finalized. This may differ from the time for which failover was

            requested. This field will be present when a replication stream is

            in the COMPLETED state.'
          type: string
          format: date-time
        canceled_at:
          description: canceled_at is the timestamp at which the replication stream was canceled.
          type: string
          format: date-time
        created_at:
          description: 'created_at is the timestamp at which the replication stream was

            created.'
          type: string
          format: date-time
        failover_at:
          description: 'failover_at is the time for which failover is requested. If the user

            sets the status to ''FAILING_OVER'' but omits failover_at, the failover

            time will default to the latest consistent replicated time.

            Otherwise, the user can pick a time up to one hour in the future to

            schedule a failover, or a time in the past to restore the cluster to

            a recent state. This field will be present if the user has

            requested failover at a future time.'
          type: string
          format: date-time
        id:
          description: id is the UUID of the replication stream.
          type: string
        primary_cluster_id:
          description: primary_cluster_id is the ID of the cluster that is being replicated.
          type: string
        replicated_time:
          description: 'replicated_time is the timestamp indicating the point up to which

            data has been replicated. The window between replicated_time and

            the actual time is known as replication lag. This field will be

            present when a replication stream is in the REPLICATING state.'
          type: string
          format: date-time
        replication_lag_seconds:
          description: 'replication_lag_seconds is the replication lag (current time minus

            replicated time) in seconds. This field will be present when a

            replication stream is in the REPLICATING state.'
          type: integer
          format: int32
        retained_time:
          description: 'retained_time is the timestamp indicating the lower bound that the

            replication stream can failover to. This field will be present

            when a replication stream is in the REPLICATING state.'
          type: string
          format: date-time
        standby_cluster_id:
          description: 'standby_cluster_id is the ID of the standby cluster that data is being

            replicated to.'
          type: string
        status:
          $ref: '#/components/schemas/ReplicationStreamStatus.Type'
      example:
        activation_at: '2006-01-03T15:04:15Z'
        created_at: '2006-01-02T15:04:05Z'
        failover_at: '2006-01-03T15:04:05Z'
        id: 00000000-0000-0000-0000-000000000001
        primary_cluster_id: 00000000-0000-0000-0000-000000000002
        replicated_time: '2006-01-03T15:04:04Z'
        retained_time: '2006-01-02T15:04:06Z'
        standby_cluster_id: 00000000-0000-0000-0000-000000000003
        status: COMPLETED
      required:
      - id
      - status
      - primary_cluster_id
      - standby_cluster_id
      - created_at
    KeysetPaginationResponse:
      type: object
      properties:
        next_page:
          type: string
        previous_page:
          type: string
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
externalDocs:
  description: Use the CockroachDB Cloud API
  url: https://www.cockroachlabs.com/docs/cockroachcloud/cloud-api.html