> ## Documentation Index
> Fetch the complete documentation index at: https://www.seam.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update an Access Grant

> Updates an existing Access Grant's time window.

You must include at least one request parameter.



## OpenAPI

````yaml /openapi.json patch /access_grants/update
openapi: 3.0.0
info:
  description: >-
    Programmable API to control locks, thermostats, noise sensors, cameras,
    access control systems, and other IoT devices.


    Prefer the official Seam SDKs over hand-written HTTP calls: they handle

    authentication, request serialization, pagination, and error handling for

    you. The official SDKs are listed in this document under

    `info.x-seam-sdks`.


    If you call the HTTP API directly, your query parameters must be

    serialized compatibly with the Seam API. There is no universal convention

    for serializing arrays, booleans, or nested objects in a query string, so

    use @seamapi/url-search-params-serializer, the language specific serializer
    module provided by each Seam SDK, or follow its specification:

    https://github.com/seamapi/url-search-params-serializer
  title: Seam Connect
  version: 1.0.0
  x-seam-query-serializer:
    description: >-
      Reference implementation and specification for query parameter
      serialization compatible with the Seam API.
    url: https://github.com/seamapi/url-search-params-serializer
  x-seam-sdks:
    - language: javascript
      url: https://github.com/seamapi/javascript
    - language: python
      url: https://github.com/seamapi/python
    - language: ruby
      url: https://github.com/seamapi/ruby
    - language: php
      url: https://github.com/seamapi/php
    - language: csharp
      url: https://github.com/seamapi/csharp
servers:
  - url: https://connect.getseam.com
security: []
tags:
  - description: access_codes
    name: /access_codes
  - description: acs
    name: /acs
  - description: action_attempts
    name: /action_attempts
  - description: client_sessions
    name: /client_sessions
  - description: connected_accounts
    name: /connected_accounts
  - description: connect_webviews
    name: /connect_webviews
  - description: devices
    name: /devices
  - description: events
    name: /events
  - description: health
    name: /health
  - description: locks
    name: /locks
  - description: networks
    name: /networks
  - description: noise_sensors
    name: /noise_sensors
  - description: phones
    name: /phones
  - description: thermostats
    name: /thermostats
  - description: user_identities
    name: /user_identities
  - description: webhooks
    name: /webhooks
  - description: workspaces
    name: /workspaces
paths:
  /access_grants/update:
    patch:
      tags: []
      summary: Update an Access Grant
      description: |-
        Updates an existing Access Grant's time window.

        You must include at least one request parameter.
      operationId: accessGrantsUpdatePatch
      requestBody:
        content:
          application/json:
            schema:
              properties:
                access_grant_id:
                  description: >-
                    ID of the Access Grant to update. Provide either
                    `access_grant_id` or `access_grant_key`.
                  format: uuid
                  type: string
                access_grant_key:
                  description: >-
                    Key of the Access Grant to update. Provide either
                    `access_grant_id` or `access_grant_key`.
                  minLength: 1
                  type: string
                ends_at:
                  description: >-
                    Date and time at which the validity of the grant ends, in
                    [ISO
                    8601](https://www.iso.org/iso-8601-date-and-time-format.html)
                    format. Must be a time in the future and after `starts_at`.
                  format: date-time
                  nullable: true
                  type: string
                name:
                  description: Display name for the access grant.
                  nullable: true
                  type: string
                starts_at:
                  description: >-
                    Date and time at which the validity of the grant starts, in
                    [ISO
                    8601](https://www.iso.org/iso-8601-date-and-time-format.html)
                    format.
                  format: date-time
                  type: string
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                properties: {}
                type: object
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      security:
        - pat_with_workspace: []
        - console_session_with_workspace: []
        - api_key: []
        - client_session_with_customer: []
      x-codeSamples:
        - lang: javascript
          label: Seam SDK
          source: |-
            await seam.accessGrants.update({
              access_grant_id: "4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1",
              starts_at: "2025-06-19T18:01:32.000Z",
              ends_at: "2025-06-22T13:24:50.000Z",
            });

            /*
            // void
            */
        - lang: bash
          label: cURL
          source: >-
            curl --include --request POST
            "https://connect.getseam.com/access_grants/update" \
              --header "Authorization: Bearer $SEAM_API_KEY" \
              --json @- <<EOF
            {
              "access_grant_id": "4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1",
              "starts_at": "2025-06-19T18:01:32.000Z",
              "ends_at": "2025-06-22T13:24:50.000Z"
            }

            EOF


            # Response:

            # {}
        - lang: python
          label: Seam SDK
          source: |-
            seam.access_grants.update(
                access_grant_id="4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1",
                starts_at="2025-06-19T18:01:32.000Z",
                ends_at="2025-06-22T13:24:50.000Z",
            )

            # None
        - lang: ruby
          label: Seam SDK
          source: |-
            seam.access_grants.update(
              access_grant_id: "4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1",
              starts_at: "2025-06-19T18:01:32.000Z",
              ends_at: "2025-06-22T13:24:50.000Z",
            )

            # => nil
        - lang: php
          label: Seam SDK
          source: |-
            $seam->access_grants->update(
                access_grant_id: "4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1",
                starts_at: "2025-06-19T18:01:32.000Z",
                ends_at: "2025-06-22T13:24:50.000Z",
            );
        - lang: bash
          label: Seam CLI
          source: >-
            seam access-grants update --access_grant_id
            "4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1" --starts_at
            "2025-06-19T18:01:32.000Z" --ends_at "2025-06-22T13:24:50.000Z"


            # {}
components:
  securitySchemes:
    pat_with_workspace:
      bearerFormat: API Token
      scheme: bearer
      type: http
    console_session_with_workspace:
      bearerFormat: Console Session Token
      scheme: bearer
      type: http
    api_key:
      bearerFormat: API Key
      scheme: bearer
      type: http
    client_session_with_customer:
      bearerFormat: Customer Client Session Token
      scheme: bearer
      type: http

````