Render Services API

[Services](https://render.com/docs/service-types) allow you to manage your web services, private services, background workers, cron jobs, and static sites.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

render-services-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Render Public Audit Logs Services API
  description: Manage everything about your Render services
  version: 1.0.0
  contact:
    name: Render API
    url: https://community.render.com
    email: support@render.com
servers:
- url: https://api.render.com/v1
security:
- BearerAuth: []
tags:
- name: Services
  description: '[Services](https://render.com/docs/service-types) allow you to manage your web services, private services, background workers, cron jobs, and static sites.

    '
paths:
  /services:
    get:
      summary: List services
      description: 'List services matching the provided filters. If no filters are provided, returns all services you have permissions to view.

        '
      operationId: list-services
      tags:
      - Services
      parameters:
      - $ref: '#/components/parameters/nameParam'
      - $ref: '#/components/parameters/serviceTypeParam'
      - $ref: '#/components/parameters/environmentIdParam'
      - $ref: '#/components/parameters/envParam'
      - $ref: '#/components/parameters/regionParam'
      - $ref: '#/components/parameters/suspendedParam'
      - $ref: '#/components/parameters/createdBeforeParam'
      - $ref: '#/components/parameters/createdAfterParam'
      - $ref: '#/components/parameters/updatedBeforeParam'
      - $ref: '#/components/parameters/updatedAfterParam'
      - $ref: '#/components/parameters/ownerIdParam'
      - $ref: '#/components/parameters/includePreviewsParam'
      - $ref: '#/components/parameters/cursorParam'
      - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceList'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create service
      description: 'Creates a new Render service in the specified workspace with the specified configuration.

        '
      operationId: create-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/servicePOST'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceAndDeploy'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '402':
          $ref: '#/components/responses/402PaymentRequired'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '409':
          $ref: '#/components/responses/409Conflict'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    get:
      summary: Retrieve service
      description: 'Retrieve the service with the provided ID.

        '
      operationId: retrieve-service
      tags:
      - Services
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/service'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      summary: Update service
      description: 'Update the service with the provided ID.

        '
      operationId: update-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/servicePATCH'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/service'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '402':
          $ref: '#/components/responses/402PaymentRequired'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '409':
          $ref: '#/components/responses/409Conflict'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete service
      description: 'Delete the service with the provided ID.

        '
      operationId: delete-service
      tags:
      - Services
      responses:
        '204':
          description: Service deleted
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/cache/purge:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Purge Web Service Cache
      description: 'Trigger cache purge for the web service if caching is enabled.

        '
      operationId: purge-cache
      tags:
      - Services
      requestBody:
        required: false
        content: {}
      responses:
        '202':
          description: Cache purge request accepted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '409':
          $ref: '#/components/responses/409Conflict'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/env-vars:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    get:
      summary: List environment variables
      description: 'List all environment variables for the service with the provided ID.

        '
      operationId: get-env-vars-for-service
      tags:
      - Services
      parameters:
      - $ref: '#/components/parameters/cursorParam'
      - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/envVarWithCursor'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update environment variables
      description: Replace all environment variables for a service with the provided list of environment variables.
      operationId: update-env-vars-for-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/envVarInputArray'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/envVarWithCursor'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/env-vars/{envVarKey}:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    - $ref: '#/components/parameters/envVarKeyParam'
    get:
      summary: Retrieve environment variable
      description: 'Retrieve a particular environment variable for a particular service.


        This only applies to environment variables set directly on the service, not to environment variables in a linked environment group.

        '
      operationId: retrieve-env-var
      tags:
      - Services
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envVar'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Add or update environment variable
      description: 'Add or update a particular environment variable for a particular service.


        This only applies to environment variables set directly on the service, not to environment variables in a linked environment group.

        '
      operationId: update-env-var
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/addUpdateEnvVarInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envVar'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete environment variable
      description: 'Delete a particular environment variable from a particular service.


        This only applies to environment variables set directly on the service, not to environment variables in a linked environment group.

        '
      operationId: delete-env-var
      tags:
      - Services
      responses:
        '204':
          description: Environment variable deleted
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/secret-files:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    get:
      summary: List secret files
      description: 'List all secret files for the service with the provided ID.

        '
      operationId: list-secret-files-for-service
      tags:
      - Services
      parameters:
      - $ref: '#/components/parameters/cursorParam'
      - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/secretFileWithCursor'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update secret files
      description: 'Replace all secret files for a service with the provided list of secret files.


        **Any of the service''s existing secret files not included in this request will be deleted.**


        This only applies to secret files set directly on the service, not to secret files in a linked environment group.

        '
      operationId: update-secret-files-for-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/secretFileInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/secretFileWithCursor'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/secret-files/{secretFileName}:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    - name: secretFileName
      in: path
      required: true
      description: The file name of the secret file
      schema:
        type: string
    get:
      summary: Retrieve secret file
      description: 'Retrieve a particular secret file for a particular service.


        This only applies to secret files set directly on the service, not to secret files in a linked environment group.

        '
      operationId: retrieve-secret-file
      tags:
      - Services
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/secretFile'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Add or update secret file
      description: 'Add or update a particular secret file for a particular service.


        This only applies to secret files set directly on the service, not to secret files in a linked environment group.

        '
      operationId: add-or-update-secret-file
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                content:
                  type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/secretFile'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete secret file
      description: 'Delete a particular secret file from a particular service.


        This only applies to secret files set directly on the service, not to secret files in a linked environment group.

        '
      operationId: delete-secret-file
      tags:
      - Services
      responses:
        '204':
          description: Secret file deleted
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/events:
    get:
      tags:
      - Services
      summary: List events
      description: List recent events that occurred for the service with the provided ID.
      operationId: list-events
      parameters:
      - $ref: '#/components/parameters/serviceIdParam'
      - $ref: '#/components/parameters/eventTypeParam'
      - $ref: '#/components/parameters/startTimeParam'
      - $ref: '#/components/parameters/endTimeParam'
      - $ref: '#/components/parameters/cursorParam'
      - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/serviceEventWithCursor'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/suspend:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Suspend service
      description: 'Suspend the service with the provided ID.

        '
      operationId: suspend-service
      tags:
      - Services
      responses:
        '202':
          description: Service suspended successfully
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/resume:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Resume service
      description: 'Resume the service with the provided ID (if it''s currently suspended).

        '
      operationId: resume-service
      tags:
      - Services
      responses:
        '202':
          description: Service resumed successfully
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/restart:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Restart service
      description: 'Restart the service with the provided ID.


        Not supported for cron jobs.

        '
      operationId: restart-service
      tags:
      - Services
      responses:
        '200':
          description: Service restarted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/scale:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Scale instance count
      description: '[Scale](https://render.com/docs/scaling#manual-scaling) the service with the provided ID to a fixed number of instances.


        Render ignores this value as long as autoscaling is enabled for the service.

        '
      operationId: scale-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - numInstances
              properties:
                numInstances:
                  type: integer
                  example: 3
      responses:
        '202':
          description: Service scaled successfully
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/autoscaling:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    put:
      summary: Update autoscaling config
      description: 'Update the [autoscaling](https://render.com/docs/scaling#autoscaling) config for the service with the provided ID.

        '
      operationId: autoscale-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webServiceDetails/properties/autoscaling'
      responses:
        '200':
          description: Autoscaling configuration updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webServiceDetails/properties/autoscaling'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete autoscaling config
      description: 'Delete the autoscaling config for a service given the service id.

        '
      operationId: delete-autoscaling-config
      tags:
      - Services
      responses:
        '204':
          description: Autoscaling config deleted
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '410':
          $ref: '#/components/responses/410Gone'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/preview:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    post:
      summary: Create service preview (image-backed)
      description: 'Create a preview instance for an image-backed service. The preview uses the settings of the base service (referenced by `serviceId`), except settings overridden via provided parameters.


        View all active previews from your service''s Previews tab in the Render Dashboard.


        Note that you can''t create previews for Git-backed services using the Render API.

        '
      operationId: preview-service
      tags:
      - Services
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/previewInput'
      responses:
        '200':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceAndDeploy'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /services/{serviceId}/instances:
    parameters:
    - $ref: '#/components/parameters/serviceIdParam'
    get:
      summary: List instances
      description: List instances for the provided service.
      operationId: list-instances
      tags:
      - Services
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/serviceInstance'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429RateLimit'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
components:
  schemas:
    cronJobDetailsPATCH:
      type: object
      properties:
        envSpecificDetails:
          $ref: '#/components/schemas/envSpecificDetailsPATCH'
        plan:
          $ref: '#/components/schemas/paidPlan'
        schedule:
          type: string
        runtime:
          $ref: '#/components/schemas/serviceRuntime'
    serviceEventWithCursor:
      type: object
      description: A service event with a cursor
      required:
      - event
      - cursor
      properties:
        event:
          type: object
          required:
          - id
          - timestamp
          - serviceId
          - type
          - details
          properties:
            id:
              $ref: '#/paths/~1events~1%7BeventId%7D/parameters/0/schema'
            timestamp:
              type: string
              format: date-time
            serviceId:
              type: string
            type:
              $ref: '#/components/parameters/eventTypeParam/schema/anyOf/0'
            details:
              title: Service Event Details
              oneOf:
              - title: Autoscaling Config Changed
                type: object
                required:
                - toConfig
                properties:
                  fromConfig:
                    $ref: '#/components/schemas/webServiceDetails/properties/autoscaling'
                  toConfig:
                    $ref: '#/components/schemas/webServiceDetails/properties/autoscaling'
              - title: Autoscaling Ended
                type: object
                required:
                - fromInstances
                - toInstances
                properties:
                  fromInstances:
                    type: integer
                  toInstances:
                    type: integer
              - title: Autoscaling Started
                type: object
                required:
                - fromInstances
                - toInsta

# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/render/refs/heads/main/openapi/render-services-api-openapi.yml