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

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

````