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.

Operations 25

GET /services List services #
POST /services Create service #
GET /services/{serviceId} Retrieve service #
PATCH /services/{serviceId} Update service #
DELETE /services/{serviceId} Delete service #
POST /services/{serviceId}/cache/purge Purge Web Service Cache #
GET /services/{serviceId}/env-vars List environment variables #
PUT /services/{serviceId}/env-vars Update environment variables #
GET /services/{serviceId}/env-vars/{envVarKey} Retrieve environment variable #
PUT /services/{serviceId}/env-vars/{envVarKey} Add or update environment variable #
DELETE /services/{serviceId}/env-vars/{envVarKey} Delete environment variable #
GET /services/{serviceId}/secret-files List secret files #
PUT /services/{serviceId}/secret-files Update secret files #
GET /services/{serviceId}/secret-files/{secretFileName} Retrieve secret file #
PUT /services/{serviceId}/secret-files/{secretFileName} Add or update secret file #
DELETE /services/{serviceId}/secret-files/{secretFileName} Delete secret file #
GET /services/{serviceId}/events List events #
POST /services/{serviceId}/suspend Suspend service #
POST /services/{serviceId}/resume Resume service #
POST /services/{serviceId}/restart Restart service #
POST /services/{serviceId}/scale Scale instance count #
PUT /services/{serviceId}/autoscaling Update autoscaling config #
DELETE /services/{serviceId}/autoscaling Delete autoscaling config #
POST /services/{serviceId}/preview Create service preview (image-backed) #
GET /services/{serviceId}/instances List instances #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/render-services-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

render-services-api-openapi.yml Raw ↑
openapi: 3.2.0
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:
    backgroundWorkerDetails:
      type: object
      required:
      - env
      - runtime
      - envSpecificDetails
      - plan
      - region
      - numInstances
      - buildPlan
      properties:
        autoscaling:
          $ref: '#/components/schemas/webServiceDetails/properties/autoscaling'
        disk:
          $ref: '#/components/schemas/webServiceDetails/properties/disk'
        env:
          $ref: '#/components/schemas/serviceEnv'
        envSpecificDetails:
          $ref: '#/components/schemas/envSpecificDetails'
        numInstances:
          type: integer
          description: For a *manually* scaled service, this is the number of instances the service is scaled to. DOES NOT indicate the number of running instances for an *autoscaled* service.
        parentServer:
          $ref: '#/components/schemas/resource'
        plan:
          $ref: '#/components/schemas/plan'
        pullRequestPreviewsEnabled:
          $ref: '#/components/schemas/pullRequestPreviewsEnabled'
        previews:
          $ref: '#/components/schemas/previews'
        region:
          $ref: '#/components/schemas/region'
        runtime:
          $ref: '#/components/schemas/serviceRuntime'
        sshAddress:
          $ref: '#/components/schemas/sshAddress'
        buildPlan:
          $ref: '#/components/schemas/buildPlan'
        maxShutdownDelaySeconds:
          $ref: '#/components/schemas/maxShutdownDelaySeconds'
    serviceRuntime:
      type: string
      enum:
      - docker
      - elixir
      - go
      - node
      - python
      - ruby
      - rust
      - image
      description: Runtime
    pullRequestPreviewsEnabled:
      type: string
      enum:
      - 'yes'
      - 'no'
      default: 'no'
      deprecated: true
      description: This field has been deprecated. previews.generation should be used in its place.
    registryCredentialSummary:
      type: object
      required:
     

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