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

# List Flow Versions

> Returns the immutable flow-version history for a flow agent, newest first. Each successful save (POST or PATCH that includes `flow_config`) writes one row, deduplicated by SHA-256 content hash so re-saving an identical graph is a no-op.


Returns the immutable flow-version history for a flow agent. Each successful save (POST or PATCH that includes `flow_config`) writes one row, deduplicated by SHA-256 hash so re-saving an identical graph is a no-op rather than a new revision.

Required scope: `flows:read`.

Use this for:

* Displaying a "version history" panel in your own UI
* Auditing who changed what and when (note: API-key snapshots have `created_by_email = null`)
* Diffing two saved flows by pulling each version from the corresponding row (full `flow_config` is not included in the list — fetch the row directly via Supabase if you need the body, or use the dashboard's Flow Versions panel)

Pagination uses an ISO timestamp cursor. Pass back the `next_cursor` from the previous response to walk further into history.

## Errors

| HTTP | Code | When                                                                          |
| ---- | ---- | ----------------------------------------------------------------------------- |
| 400  | —    | `cursor` is not a valid ISO-8601 timestamp, or `limit` is outside `[1, 100]`. |
| 400  | —    | Agent in the path is not a flow agent (`type` is `prompt`).                   |
| 404  | —    | Agent id does not exist (or is not visible to the calling company).           |


## OpenAPI

````yaml GET /agents/{id}/flow/versions
openapi: 3.1.0
info:
  title: Yappr API
  description: >
    Create and manage AI voice agents, purchase phone numbers, configure tools,
    and initiate calls — all via REST.
  version: 1.0.0
  contact:
    url: https://goyappr.com
servers:
  - url: https://api.goyappr.com
    description: Production
security:
  - apiKey: []
paths:
  /agents/{id}/flow/versions:
    parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
          format: uuid
    get:
      tags:
        - Flow Agents
      summary: List flow versions
      description: >
        Returns the immutable flow-version history for a flow agent, newest
        first. Each successful save (POST or PATCH that includes `flow_config`)
        writes one row, deduplicated by SHA-256 content hash so re-saving an
        identical graph is a no-op.
      operationId: listAgentFlowVersions
      parameters:
        - in: query
          name: limit
          schema:
            type: integer
            default: 20
            maximum: 100
        - in: query
          name: cursor
          description: >-
            ISO 8601 timestamp from a prior `next_cursor` to page back further
            in time.
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Page of flow versions
          content:
            application/json:
              schema:
                type: object
                properties:
                  versions:
                    type: array
                    items:
                      $ref: '#/components/schemas/FlowVersion'
                  next_cursor:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Pass back as `cursor` to fetch the next page. NULL when no
                      more rows.
        '404':
          description: Agent not found
components:
  schemas:
    FlowVersion:
      type: object
      properties:
        id:
          type: string
          format: uuid
        content_hash:
          type: string
          description: >-
            SHA-256 hex (length=64) of the canonicalized flow_config — identical
            saves dedupe
        created_at:
          type: string
          format: date-time
        created_by_email:
          type: string
          nullable: true
          description: >-
            Email of the user who saved this version. NULL for API-key
            snapshots.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Your Yappr API key (e.g. `ypr_live_...`). Generate one in the dashboard
        under **Settings → API Keys**.

````