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

> ## Agent Instructions
> If this page is missing information, contains outdated instructions, or doesn't fully answer the user's question, use the feedback tool to report it. In your feedback, be specific about what's missing, what appears out of date, or what needs to be corrected or updated, so the docs team can act on it directly.

> Retrieve a single GitHub build for a Runpod Serverless endpoint by its build ID, returning that build regardless of how old it is.

# Get a serverless endpoint build



## OpenAPI

````yaml get /v2/serverless/{id}/builds/{buildId}
openapi: 3.1.0
info:
  title: Runpod REST API
  version: 2.0.0
  description: Runpod public REST API — v2
servers:
  - url: https://api.runpod.io
    description: Runpod API v2 production server
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Account-scoped settings and primitives (SSH public keys).
  - name: Pods
    description: GPU and CPU pod lifecycle, configuration, actions, and log streaming.
  - name: Serverless
    description: >-
      Serverless endpoint lifecycle, worker visibility, releases, and worker log
      streaming.
  - name: Templates
    description: Reusable pod and endpoint configuration templates.
  - name: Network Volumes
    description: Persistent network storage volumes for workloads.
  - name: Registries
    description: Container registry credentials used to pull private images.
  - name: Catalog
    description: Available GPU, CPU, data center, and public template catalog metadata.
  - name: Billing
    description: Billing history and usage cost records across resource types.
paths:
  /v2/serverless/{id}/builds/{buildId}:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Serverless endpoint identifier
        example: ep_abc123
      - name: buildId
        in: path
        required: true
        schema:
          type: string
        description: >-
          GitHub build identifier (from GET /v2/serverless/{id}/builds or a
          release's `buildId`)
        example: build_abc123
    get:
      tags:
        - Serverless
      summary: Get a serverless endpoint build
      description: |
        Returns one of the endpoint's GitHub builds by id, regardless of age —
        unlike the list, which is capped to recent history.
      operationId: getEndpointBuild
      responses:
        '200':
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
              examples:
                build:
                  summary: Successful response
                  value:
                    id: build_abc123
                    status: COMPLETED
                    commitHash: abc1234
                    commitMessage: bump model
                    branch: main
                    commitDate: '2026-06-01T12:00:00Z'
                    imageName: registry.runpod.net/repo:abc1234
                    startedAt: '2026-06-01T12:00:05Z'
                    completedAt: '2026-06-01T12:04:31Z'
                    error: null
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
        default:
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          description: Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  headers:
    RateLimit:
      schema:
        $ref: '#/components/schemas/RateLimitHeader'
    RateLimit-Policy:
      schema:
        $ref: '#/components/schemas/RateLimitPolicyHeader'
  schemas:
    Build:
      type: object
      required:
        - id
        - status
      properties:
        id:
          type: string
          examples:
            - build_abc123
        status:
          $ref: '#/components/schemas/BuildState'
        commitHash:
          type:
            - string
            - 'null'
          description: Short hash of the commit that triggered the build.
          examples:
            - abc1234
        commitMessage:
          type:
            - string
            - 'null'
          examples:
            - bump model
        branch:
          type:
            - string
            - 'null'
          description: Git branch the commit was pushed to.
          examples:
            - main
        commitDate:
          type:
            - string
            - 'null'
          format: date-time
          description: When the triggering commit was authored.
          examples:
            - '2026-06-01T12:00:00Z'
        imageName:
          type:
            - string
            - 'null'
          description: Fully qualified image the build produced (or will produce).
          examples:
            - registry.runpod.net/repo:abc1234
        startedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: When the build started. Null while the build is still pending.
          examples:
            - '2026-06-01T12:00:05Z'
        completedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            When the build reached a terminal state. Null while the build is
            live.
          examples:
            - '2026-06-01T12:04:31Z'
        error:
          type:
            - string
            - 'null'
          description: Failure detail for `FAILED` / `TEST_FAILED` builds; null otherwise.
    ErrorResponse:
      type: object
      required:
        - title
        - status
        - detail
      properties:
        title:
          type: string
          description: Short human-readable summary
          examples:
            - Not Found
        status:
          type: integer
          description: HTTP status code
          examples:
            - 404
        detail:
          type: string
          description: Human-readable explanation
          examples:
            - pod not found
        errors:
          type: array
          description: Individual request-validation failures.
          items:
            type: string
          examples:
            - - '$: additional properties ''bogus'' not allowed'
    RateLimitHeader:
      type: string
      description: |
        Live per-window quota state. Optional — omitted for rate-limit-exempt
        callers.

        A structured-field list with one member per window (`minute`, `hour`,
        `day`), each carrying the remaining request count `r` and seconds until
        the window resets `t`. Returned on responses to authenticated requests,
        not only on 429s.
      examples:
        - '"minute";r=0;t=12, "hour";r=2800;t=1812, "day";r=49500;t=45012'
    RateLimitPolicyHeader:
      type: string
      description: >
        Static per-window quota policy. Optional — omitted for rate-limit-exempt

        callers.


        A structured-field list with one member per window (`minute`, `hour`,

        `day`), each carrying the quota `q` and the window length in seconds
        `w`.

        Returned on responses to authenticated requests, not only on 429s.
      examples:
        - '"minute";q=60;w=60, "hour";q=3000;w=3600, "day";q=50000;w=86400'
    BuildState:
      type: string
      description: |
        GitHub build lifecycle state. `COMPLETED`, `FAILED`, `CANCELLED`, and
        `TEST_FAILED` are terminal; `PENDING`, `BUILDING`, `UPLOADING`, and
        `TESTING` are live.
      x-enum-varnames:
        - BuildStatePending
        - BuildStateBuilding
        - BuildStateUploading
        - BuildStateTesting
        - BuildStateCompleted
        - BuildStateFailed
        - BuildStateCancelled
        - BuildStateTestFailed
      enum:
        - PENDING
        - BUILDING
        - UPLOADING
        - TESTING
        - COMPLETED
        - FAILED
        - CANCELLED
        - TEST_FAILED
  responses:
    UnauthorizedError:
      description: >-
        Authentication failed because the bearer token is missing, malformed,
        expired, or invalid.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingBearerToken:
              summary: Missing bearer token
              value:
                title: Unauthorized
                status: 401
                detail: missing bearer token
    ForbiddenError:
      headers:
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      description: >-
        The bearer token is valid, but it does not grant access to the requested
        resource or action.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            insufficientAccess:
              summary: Insufficient access
              value:
                title: Forbidden
                status: 403
                detail: access denied
    NotFoundError:
      headers:
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      description: The requested resource was not found or is not accessible to the caller.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            notFound:
              summary: Resource not found
              value:
                title: Not Found
                status: 404
                detail: resource not found
    TooManyRequestsError:
      description: >
        The caller exceeded its per-user rate limit. The response identifies the
        window that was exceeded and how long to wait. The `RateLimit` and
        `RateLimit-Policy` headers (per the IETF ratelimit-headers draft) also
        accompany successful responses, so clients can track quota before a 429.
      headers:
        Retry-After:
          description: Seconds to wait before retrying, per the exceeded window.
          schema:
            type: integer
          example: 12
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            rateLimited:
              summary: Rate limit exceeded
              value:
                title: Too Many Requests
                status: 429
                detail: rate limit exceeded for the minute window
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Runpod API Key
      description: >
        Runpod API key authentication. Generate an API key in the Runpod console
        and send it in the `Authorization` header as `Bearer <api_key>`. Keys
        are scoped to the permissions granted when created; requests may return
        `403` when a valid key lacks access to the requested resource or action.

````