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

# Get team routing form history

> Required membership role: `org member`. PBAC permission: `routingForm.readTeamAuditLogs` on the team or `routingForm.readOrgAuditLogs` on the organization. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the `TEAM_ROUTING_FORM_READ` scope is required. Returns the form's change history, newest first.



## OpenAPI

````yaml /api-reference/v2/openapi.json get /v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/history
openapi: 3.0.0
info:
  title: Cal.com API v2
  description: ''
  version: 1.0.0
  contact: {}
servers: []
security: []
tags: []
paths:
  /v2/organizations/{orgId}/teams/{teamId}/routing-forms/{routingFormId}/history:
    get:
      tags:
        - Orgs / Teams / Routing forms
      summary: Get team routing form history
      description: >-
        Required membership role: `org member`. PBAC permission:
        `routingForm.readTeamAuditLogs` on the team or
        `routingForm.readOrgAuditLogs` on the organization. Learn more about API
        access control at https://cal.com/docs/api-reference/v2/access-control.
        If accessed using an OAuth access token, the `TEAM_ROUTING_FORM_READ`
        scope is required. Returns the form's change history, newest first.
      operationId: OrganizationsTeamsRoutingFormsController_getTeamRoutingFormHistory
      parameters:
        - name: Authorization
          in: header
          description: >-
            value must be `Bearer <token>` where `<token>` is api key prefixed
            with cal_
          required: true
          schema:
            type: string
        - name: orgId
          required: true
          in: path
          schema:
            type: number
        - name: teamId
          required: true
          in: path
          schema:
            type: number
        - name: routingFormId
          required: true
          in: path
          schema:
            type: string
        - name: limit
          required: false
          in: query
          description: Number of history entries to return.
          schema:
            minimum: 1
            maximum: 50
            default: 25
            type: number
        - name: cursor
          required: false
          in: query
          description: >-
            Pass `pagination.nextCursor` from the previous response to fetch
            older entries.
          schema:
            format: uuid
            example: 019a1b2c-3d4e-7f80-9a1b-2c3d4e5f6a7b
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTeamRoutingFormHistoryOutput'
components:
  schemas:
    GetTeamRoutingFormHistoryOutput:
      type: object
      properties:
        status:
          enum:
            - success
            - error
          type: string
          example: success
        data:
          description: Newest first
          type: array
          items:
            $ref: '#/components/schemas/TeamRoutingFormHistoryEntryOutput'
        pagination:
          $ref: '#/components/schemas/TeamRoutingFormHistoryPaginationOutput'
      required:
        - status
        - data
        - pagination
    TeamRoutingFormHistoryEntryOutput:
      type: object
      properties:
        id:
          type: string
          example: 019a1b2c-3d4e-7f80-9a1b-2c3d4e5f6a7b
        timestamp:
          type: string
          example: '2026-10-12T10:00:00.000Z'
          format: date-time
        actor:
          $ref: '#/components/schemas/TeamRoutingFormHistoryActorOutput'
        changes:
          type: array
          items:
            type: object
            additionalProperties: true
          example:
            - field: name
              label: Name
              type: scalar
              previousValue: Intake
              newValue: Sales intake
          description: >-
            What changed. Every change has `field`, `label` and `type`: `scalar`
            adds `previousValue` and `newValue` (user ids for `sendUpdatesTo`);
            `list` (questions, routes) adds `added`, `removed` and `updated`;
            `object` nests more `changes`; `raqbTree` (route conditions) adds a
            `tree`; `created` and `deleted` mark the form's creation and
            deletion.
      required:
        - id
        - timestamp
        - actor
        - changes
    TeamRoutingFormHistoryPaginationOutput:
      type: object
      properties:
        nextCursor:
          type: string
          nullable: true
          example: 019a1b2c-3d4e-7f80-9a1b-2c3d4e5f6a7b
          description: Pass as `cursor` to fetch older entries; null when there are none
        hasMore:
          type: boolean
          example: false
      required:
        - nextCursor
        - hasMore
    TeamRoutingFormHistoryActorOutput:
      type: object
      properties:
        name:
          type: string
          nullable: true
          example: Ada Lovelace
          description: Display name of who made the change; null when they have no name
      required:
        - name

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.