Render Environment Groups API

Collections of environment variables and secret files that can be shared between multiple services

Operations 13

GET /env-groups List environment groups #
POST /env-groups Create environment group #
GET /env-groups/{envGroupId} Retrieve environment group #
PATCH /env-groups/{envGroupId} Update environment group #
DELETE /env-groups/{envGroupId} Delete environment group #
GET /env-groups/{envGroupId}/env-vars/{envVarKey} Retrieve environment variable #
PUT /env-groups/{envGroupId}/env-vars/{envVarKey} Add or update environment variable #
DELETE /env-groups/{envGroupId}/env-vars/{envVarKey} Remove environment variable #
GET /env-groups/{envGroupId}/secret-files/{secretFileName} Retrieve secret file #
PUT /env-groups/{envGroupId}/secret-files/{secretFileName} Add or update secret file #
DELETE /env-groups/{envGroupId}/secret-files/{secretFileName} Remove secret file #

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-environment-groups-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-environment-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Render Public Audit Logs Environment Groups 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: Environment Groups
  description: Collections of environment variables and secret files that can be shared between multiple services
paths:
  /env-groups:
    get:
      operationId: list-env-groups
      tags:
      - Environment Groups
      summary: List environment groups
      description: 'List environment groups matching the provided filters. If no filters are provided, all environment groups are returned.

        '
      parameters:
      - $ref: '#/components/parameters/nameParam'
      - $ref: '#/components/parameters/createdBeforeParam'
      - $ref: '#/components/parameters/createdAfterParam'
      - $ref: '#/components/parameters/updatedBeforeParam'
      - $ref: '#/components/parameters/updatedAfterParam'
      - $ref: '#/components/parameters/ownerIdParam'
      - $ref: '#/components/parameters/environmentIdParam'
      - $ref: '#/components/parameters/cursorParam'
      - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/envGroupMeta'
        '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'
    post:
      operationId: create-env-group
      tags:
      - Environment Groups
      summary: Create environment group
      description: 'Create a new environment group.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/envGroupPOSTInput'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
  /env-groups/{envGroupId}:
    get:
      operationId: retrieve-env-group
      tags:
      - Environment Groups
      summary: Retrieve environment group
      description: 'Retrieve an environment group by ID.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
    patch:
      operationId: update-env-group
      tags:
      - Environment Groups
      summary: Update environment group
      description: Update the attributes of an environment group.
      parameters:
      - in: path
        name: envGroupId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/envGroupPATCHInput'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
    delete:
      operationId: delete-env-group
      tags:
      - Environment Groups
      summary: Delete environment group
      description: Delete the environment group with the provided ID, including all environment variables and secret files it contains.
      parameters:
      - in: path
        name: envGroupId
        required: true
        schema:
          type: string
      responses:
        '204':
          description: environment group deleted
        '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'
  /env-groups/{envGroupId}/services/{serviceId}:
    post:
      operationId: link-service-to-env-group
      tags:
      - Environment Groups
      summary: Link service
      description: 'Link a particular service to a particular environment group.


        The linked service will have access to the environment variables and secret files in the group.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      - $ref: '#/components/parameters/serviceIdParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
    delete:
      operationId: unlink-service-from-env-group
      tags:
      - Environment Groups
      summary: Unlink service
      description: 'Unlink a particular service from a particular environment group.


        The service will lose access to the environment variables and secret files in the group.

        '
      parameters:
      - in: path
        name: envGroupId
        required: true
        schema:
          type: string
      - in: path
        name: serviceId
        required: true
        schema:
          type: string
      responses:
        '204':
          description: service unlinked from environment group
        '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'
  /env-groups/{envGroupId}/env-vars/{envVarKey}:
    get:
      operationId: retrieve-env-group-env-var
      tags:
      - Environment Groups
      summary: Retrieve environment variable
      description: 'Retrieve a particular environment variable in a particular environment group.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      - $ref: '#/components/parameters/envVarKeyParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envVar'
        '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'
    put:
      operationId: update-env-group-env-var
      tags:
      - Environment Groups
      summary: Add or update environment variable
      description: 'Add or update a particular environment variable in a particular environment group.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      - $ref: '#/components/parameters/envVarKeyParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/addUpdateEnvVarInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
    delete:
      operationId: delete-env-group-env-var
      tags:
      - Environment Groups
      summary: Remove environment variable
      description: 'Remove a particular environment variable from a particular environment group.

        '
      parameters:
      - in: path
        name: envGroupId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/envVarKeyParam'
      responses:
        '204':
          description: environment variable removed from environment group
        '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'
  /env-groups/{envGroupId}/secret-files/{secretFileName}:
    get:
      operationId: retrieve-env-group-secret-file
      tags:
      - Environment Groups
      summary: Retrieve secret file
      description: 'Retrieve a particular secret file in a particular environment group.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      - $ref: '#/components/parameters/secretFileNameParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/secretFile'
        '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'
    put:
      operationId: update-env-group-secret-file
      tags:
      - Environment Groups
      summary: Add or update secret file
      description: 'Add or update a particular secret file in an particular environment group.

        '
      parameters:
      - in: path
        name: envGroupId
        required: true
        schema:
          type: string
      - in: path
        name: secretFileName
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/envGroup'
        '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'
    delete:
      operationId: delete-env-group-secret-file
      tags:
      - Environment Groups
      summary: Remove secret file
      description: 'Remove a particular secret file from a particular environment group.

        '
      parameters:
      - $ref: '#/components/parameters/envGroupIdParam'
      - $ref: '#/components/parameters/secretFileNameParam'
      responses:
        '204':
          description: secret file removed from environment group
        '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'
components:
  schemas:
    envVarValue:
      type: object
      required:
      - value
      properties:
        value:
          type: string
    addUpdateEnvVarInput:
      type: object
      oneOf:
      - $ref: '#/components/schemas/envVarValue'
      - $ref: '#/components/schemas/envVarGenerateValue'
    envGroupPOSTInput:
      type: object
      required:
      - name
      - ownerId
      - envVars
      properties:
        name:
          type: string
        ownerId:
          type: string
        envVars:
          $ref: '#/components/schemas/envVarInputArray'
        secretFiles:
          type: array
          items:
            $ref: '#/components/schemas/secretFileInput'
        serviceIds:
          type: array
          items:
            description: List of serviceIds to link the envGroup to
            type: string
        environmentId:
          type: string
    envVarInputArray:
      type: array
      items:
        $ref: '#/components/schemas/envVarInput'
    envVarKeyGenerateValue:
      type: object
      required:
      - key
      - generateValue
      properties:
        key:
          type: string
        generateValue:
          type: boolean
    envVarGenerateValue:
      type: object
      required:
      - generateValue
      properties:
        generateValue:
          type: boolean
    error:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
    envVarKeyValue:
      type: object
      required:
      - key
      - value
      properties:
        key:
          type: string
        value:
          type: string
    envVarInput:
      type: object
      oneOf:
      - $ref: '#/components/schemas/envVarKeyValue'
      - $ref: '#/components/schemas/envVarKeyGenerateValue'
    secretFileInput:
      type: object
      required:
      - name
      - content
      properties:
        name:
          type: string
        content:
          type: string
    envGroupPATCHInput:
      type: object
      required:
      - name
      properties:
        name:
          type: string
    secretFile:
      type: object
      required:
      - name
      - content
      properties:
        name:
          type: string
        content:
          type: string
    envGroup:
      allOf:
      - $ref: '#/components/schemas/envGroupMeta'
      - type: object
        required:
        - envVars
        - secretFiles
        properties:
          envVars:
            type: array
            items:
              $ref: '#/components/schemas/envVar'
          secretFiles:
            type: array
            items:
              $ref: '#/components/schemas/secretFile'
    envGroupLink:
      type: object
      required:
      - id
      - name
      - type
      properties:
        id:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/serviceTypeShort'
    serviceTypeShort:
      type: string
      enum:
      - static
      - web
      - pserv
      - worker
      - cron
    envVar:
      type: object
      required:
      - key
      - value
      properties:
        key:
          type: string
        value:
          type: string
    envGroupMeta:
      type: object
      required:
      - id
      - name
      - ownerId
      - createdAt
      - updatedAt
      - serviceLinks
      properties:
        id:
          type: string
        name:
          type: string
        ownerId:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        serviceLinks:
          description: List of serviceIds linked to the envGroup
          type: array
          items:
            $ref: '#/components/schemas/envGroupLink'
        environmentId:
          type: string
  parameters:
    envVarKeyParam:
      name: envVarKey
      in: path
      required: true
      schema:
        type: string
      description: The name of the environment variable
    updatedAfterParam:
      name: updatedAfter
      in: query
      schema:
        type: string
        format: date-time
      required: false
      description: Filter for resources updated after a certain time (specified as an ISO 8601 timestamp)
      example: '2021-06-17T08:15:30Z'
    limitParam:
      name: limit
      in: query
      required: false
      description: The maximum number of items to return. For details, see [Pagination](https://api-docs.render.com/reference/pagination).
      schema:
        type: integer
        default: 20
        minimum: 1
        maximum: 100
        description: Defaults to 20
    environmentIdParam:
      name: environmentId
      in: query
      schema:
        type: array
        items:
          type: string
      style: form
      explode: false
      required: false
      description: Filter for resources that belong to an environment
    createdAfterParam:
      name: createdAfter
      in: query
      schema:
        type: string
        format: date-time
      required: false
      description: Filter for resources created after a certain time (specified as an ISO 8601 timestamp)
      example: '2021-02-17T08:15:30Z'
    updatedBeforeParam:
      name: updatedBefore
      in: query
      schema:
        type: string
        format: date-time
      required: false
      description: Filter for resources updated before a certain time (specified as an ISO 8601 timestamp)
      example: '2021-06-17T08:15:30Z'
    envGroupIdParam:
      name: envGroupId
      in: path
      required: true
      schema:
        type: string
      description: Filter for resources that belong to an environment group
    nameParam:
      name: name
      in: query
      schema:
        type: array
        items:
          type: string
      style: form
      explode: false
      required: false
      description: Filter by name
    cursorParam:
      name: cursor
      in: query
      required: false
      description: The position in the result list to start from when fetching paginated results. For details, see [Pagination](https://api-docs.render.com/reference/pagination).
      schema:
        type: string
    serviceIdParam:
      name: serviceId
      in: path
      required: true
      description: The ID of the service
      schema:
        type: string
    createdBeforeParam:
      name: createdBefore
      in: query
      schema:
        type: string
        format: date-time
      required: false
      description: Filter for resources created before a certain time (specified as an ISO 8601 timestamp)
      example: '2021-06-17T08:15:30Z'
    ownerIdParam:
      name: ownerId
      in: query
      description: The ID of the workspaces to return resources for
      schema:
        type: array
        items:
          type: string
      style: form
      explode: false
      required: false
    secretFileNameParam:
      name: secretFileName
      in: path
      required: true
      schema:
        type: string
      description: The name of the secret file
  responses:
    503ServiceUnavailable:
      description: Server currently unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
    404NotFound:
      description: Unable to find the requested resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
    401Unauthorized:
      description: Authorization information is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
    429RateLimit:
      description: Rate limit has been surpassed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
    500InternalServerError:
      description: An unexpected server error has occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
    400BadRequest:
      description: The request could not be understood by the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
x-readme:
  metrics-enabled: false