> ## 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.

> List a Runpod Serverless endpoint's GitHub build history, newest first, capped to the 100 most recent builds, with older builds fetchable by ID.

# List serverless endpoint builds



## OpenAPI

````yaml get /v2/serverless/{id}/builds
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:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Serverless endpoint identifier
        example: ep_abc123
    get:
      tags:
        - Serverless
      summary: List serverless endpoint builds
      description: |
        Returns the endpoint's GitHub build history, newest first (RunPod
        GitHub-build integration). At most the 100 most recent builds are
        returned; any older build can still be fetched by id via
        `GET /v2/serverless/{id}/builds/{buildId}`. Stream a build's logs via
        `/v2/serverless/{id}/builds/{buildId}/logs`.
      operationId: listEndpointBuilds
      responses:
        '200':
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEndpointBuildsResponse'
              examples:
                builds:
                  summary: Successful response
                  value:
                    builds:
                      - 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:
    ListEndpointBuildsResponse:
      type: object
      required:
        - builds
      properties:
        builds:
          type: array
          description: |
            Build history, newest first. At most the 100 most recent builds
            are returned; any older build can still be fetched by id via
            `GET /v2/serverless/{id}/builds/{buildId}`.
          items:
            $ref: '#/components/schemas/Build'
    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'
    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.
    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.

````