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

# Get a pipeline

> Fetch a single pipeline by id.

<Info>
  Requires a **ServiceKey**. See [Service Keys](/goldrush-pipeline-api/service-keys).
</Info>

The `{pipeline_id}` path segment is the `pipe_`-prefixed identifier returned by [`GET /platform/pipeline-api/`](/api-reference/pipeline-api/list-pipelines).

<Note>
  Sensitive fields inside `destination_config` (passwords, tokens) are masked as `******` on read. To rotate them, send a [`PATCH`](/api-reference/pipeline-api/update-pipeline) with the new value.
</Note>


## OpenAPI

````yaml GET /platform/pipeline-api/{pipeline_id}/
openapi: 3.1.0
info:
  title: GoldRush Pipeline API
  version: 1.0.0
  description: >-
    REST API for programmatic CRUD over GoldRush pipelines. Authentication uses
    a ServiceKey - regular GoldRush API keys are not accepted on these
    endpoints.
servers:
  - url: https://api.covalenthq.com
security:
  - serviceKeyAuth: []
paths:
  /platform/pipeline-api/{pipeline_id}/:
    parameters:
      - name: pipeline_id
        in: path
        required: true
        description: The pipeline identifier, prefixed with `pipe_`.
        schema:
          type: string
    get:
      tags:
        - pipelines
      summary: Get a pipeline
      description: Fetch a single pipeline by id.
      operationId: getPipeline
      responses:
        '200':
          description: Pipeline detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PipelineEnvelope'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    PipelineEnvelope:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Pipeline'
        error:
          type: boolean
        error_message:
          type: string
          nullable: true
        error_code:
          type: string
          nullable: true
    Pipeline:
      type: object
      description: >-
        A configured pipeline. Sensitive fields inside `destination_config`
        (such as passwords) are masked as `******` on read.
      properties:
        id:
          type: string
          description: Pipeline identifier, prefixed with `pipe_`.
          example: pipe_3e8678c5fc9e48a7bf9879ca729
        name:
          type: string
          description: Human-readable pipeline name.
          example: From Base Swap to Postgres
        project:
          type: string
          description: >-
            Project identifier. Used to derive database schema, consumer group,
            and checkpoint path.
          example: pipeline-api-hr-1wk-unbounded
        description:
          type: string
          description: Free-form description.
          example: Base swaps, unbounded
        topic:
          type: string
          description: >-
            Source topic. Follows the
            `{chain}.{network}.{qualifier}.block.{entity}` pattern.
          example: base.mainnet.ref.block.swap.v3
        destination_type:
          type: string
          description: Destination kind. Determines the shape of `destination_config`.
          enum:
            - postgres
            - clickhouse
            - kafka
            - object_storage
            - sqs
            - webhook
        destination_config:
          $ref: '#/components/schemas/DestinationConfig'
        transforms:
          description: >-
            SQL transforms keyed by output table name. Some legacy pipelines
            store this as a YAML string or empty array; new pipelines should
            always use the object form.
          oneOf:
            - type: object
              additionalProperties:
                type: string
              example:
                swaps: >-
                  SELECT chain_name, block_height, tx_hash FROM swaps WHERE
                  protocol = 'uniswap_v3'
            - type: string
            - type: array
              items: {}
        execution_mode:
          type: string
          enum:
            - bounded
            - unbounded
          description: >-
            `bounded` requires both `execution_start_from` and
            `execution_stop_from`. `unbounded` runs continuously from
            `execution_start_from`.
        execution_start_from:
          type: string
          description: >-
            Block height to start from, as a string. Empty string means start
            from tip.
          example: '44745000'
        execution_stop_from:
          type: string
          description: Block height to stop at, as a string. Empty string when unbounded.
          example: ''
        abi_file:
          type: object
          description: >-
            ABI definition (JSON ABI). Empty object when ABI decoding is
            disabled.
        abi_contract_addresses:
          type: array
          items:
            type: string
          description: >-
            Restrict ABI decoding to these contract addresses. Empty means
            decode all matching signatures.
        abi_unmatched:
          type: string
          enum:
            - ''
            - skip
            - raw
          description: >-
            Behavior for entries that do not match the ABI. `skip` drops them;
            `raw` writes them to a `raw_*` fallback table; empty string is
            treated as `skip`.
        status:
          type: string
          enum:
            - running
            - paused
          description: Current pipeline status.
        created_by:
          $ref: '#/components/schemas/UserSummary'
        group:
          $ref: '#/components/schemas/GroupSummary'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    ErrorEnvelope:
      type: object
      properties:
        data:
          type: object
          nullable: true
        error:
          type: boolean
        error_message:
          type: string
        error_code:
          type: string
    DestinationConfig:
      type: object
      description: >-
        Destination-specific connection details. The accepted keys depend on
        `destination_type`. Examples: Postgres uses `url`, `user`, `password`;
        webhook uses `url`. On read, secret fields are masked as `******` and
        must be re-supplied in full on a `PUT`.
      additionalProperties: true
      properties:
        type:
          type: string
          description: Mirrors `destination_type` at the top level.
        url:
          type: string
        user:
          type: string
        password:
          type: string
    UserSummary:
      type: object
      properties:
        id:
          type: string
          example: user_fb22f43e38ac44edabc7f566c5d
        email:
          type: string
          format: email
        display_name:
          type: string
        full_name:
          type: string
    GroupSummary:
      type: object
      properties:
        id:
          type: string
          example: group_d632592ddbde4a499452d25b
        name:
          type: string
        slug:
          type: string
        is_paid:
          type: boolean
        is_over_limit:
          type: boolean
        is_free_trial_expired:
          type: boolean
  responses:
    Unauthorized:
      description: Missing or invalid ServiceKey.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Forbidden:
      description: >-
        The credential supplied is not a ServiceKey, or the ServiceKey does not
        have access to this pipeline.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    NotFound:
      description: Pipeline does not exist or is not visible to this ServiceKey.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    serviceKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: ServiceKey
      description: >-
        Pipeline REST endpoints require a ServiceKey. Regular GoldRush API keys
        are rejected with 403. See [Service
        Keys](/goldrush-pipeline-api/service-keys).

````