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

# List my approval requests

> The delegated approval requests the caller may act on. With a session token: the pending requests this user may DECIDE (named eligible by the workflow, or open to any org user — never their own), which is what a "needs your decision" view lists; `role=requester` lists the ones they asked for instead, `role=all` both. With an organization key: every request of the org, optionally narrowed to a user with X-User-Id (or `userId`) and `role`. `status` filters (default `pending` for a session, any for an org key).



## OpenAPI

````yaml /api-reference/openapi.json get /v1/approval-requests
openapi: 3.1.0
info:
  title: Sidenet API
  version: 1.0.0
  description: >-
    Sidenet HTTP endpoints exposed by the Sidenet Studio. All routes require an
    api key that can be generated through the studio in studio.sidenet.ai.
servers:
  - url: https://api.sidenet.ai
security:
  - bearerAuth: []
paths:
  /v1/approval-requests:
    get:
      tags:
        - Approvals
      summary: List my approval requests
      description: >-
        The delegated approval requests the caller may act on. With a session
        token: the pending requests this user may DECIDE (named eligible by the
        workflow, or open to any org user — never their own), which is what a
        "needs your decision" view lists; `role=requester` lists the ones they
        asked for instead, `role=all` both. With an organization key: every
        request of the org, optionally narrowed to a user with X-User-Id (or
        `userId`) and `role`. `status` filters (default `pending` for a session,
        any for an org key).
      parameters:
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - approved
              - declined
              - expired
              - stale
              - executed
              - failed
        - name: role
          in: query
          required: false
          schema:
            type: string
            enum:
              - decider
              - requester
              - all
            default: decider
        - name: userId
          in: query
          required: false
          schema:
            type: string
          description: 'Organization key: scope to this user (or send X-User-Id).'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 100
            maximum: 500
      responses:
        '200':
          description: The requests, newest first
          content:
            application/json:
              schema:
                type: object
                properties:
                  requests:
                    type: array
                    items:
                      type: object
                      properties:
                        approval_ref:
                          type: string
                          format: uuid
                          description: The request id, as the agent received it.
                        id:
                          type: string
                          format: uuid
                        org_id:
                          type: string
                          format: uuid
                        agent_id:
                          type: string
                          nullable: true
                          description: The agent that asked.
                        agent_version_id:
                          type: string
                          nullable: true
                        workflow_id:
                          type: string
                          format: uuid
                          description: The approval workflow routing the decision.
                        workflow_version_id:
                          type: string
                          nullable: true
                          description: >-
                            Pinned at capture: a republish never changes an
                            in-flight request.
                        workflow_run_id:
                          type: string
                          nullable: true
                        tool_id:
                          type: string
                        tool_name:
                          type: string
                          description: The captured tool, by its agent-facing name.
                        args:
                          type: object
                          description: >-
                            The captured arguments — exactly what executes on
                            approval. Never edited.
                        summary:
                          type: string
                          nullable: true
                          description: >-
                            The model-written sentence saying what the call does
                            (plain text).
                        metadata:
                          type: object
                          description: >-
                            What the model said about the call, outside its
                            arguments: `approval_reason` (the summary) and
                            `progress_message` (the line the widget showed while
                            the call ran). Context for the approver; never
                            executed.
                          additionalProperties: true
                        requester_user_id:
                          type: string
                        requester_run_id:
                          type: string
                          nullable: true
                        requester_thread_id:
                          type: string
                          nullable: true
                        eligible_user_ids:
                          type: array
                          nullable: true
                          items:
                            type: string
                          description: >-
                            Who may decide, as the workflow named them; null =
                            any org user but the requester.
                        ttl_minutes:
                          type: integer
                          nullable: true
                        expires_at:
                          type: string
                          format: date-time
                          nullable: true
                        status:
                          type: string
                          enum:
                            - pending
                            - approved
                            - declined
                            - expired
                            - stale
                            - executed
                            - failed
                          description: >-
                            pending → approved | declined | expired | stale;
                            approved → executed | failed (| stale after a failed
                            dry run).
                        decided_by_user_id:
                          type: string
                          nullable: true
                        decided_at:
                          type: string
                          format: date-time
                          nullable: true
                        decision_note:
                          type: string
                          nullable: true
                        decision_channel:
                          type: string
                          nullable: true
                        execution_run_id:
                          type: string
                          nullable: true
                        execution_result:
                          description: The tool's result when executed.
                          nullable: true
                        execution_error:
                          type: string
                          nullable: true
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
              example:
                requests:
                  - approval_ref: 7d2e1c54-9a0b-4f3e-8c21-5b6d7e8f9a01
                    id: 7d2e1c54-9a0b-4f3e-8c21-5b6d7e8f9a01
                    org_id: c0a8012e-5f3b-4d1a-9e2f-7b6c5d4e3f21
                    agent_id: 6f1c0f4e-2b7a-4a51-9a2f-0c9d1b3e5a10
                    agent_version_id: a7c3e1d5-6b48-4f92-8a03-e5c9b2d417f6
                    workflow_id: 4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641
                    workflow_version_id: 0e1f2a3b-4c5d-4e6f-8a9b-0c1d2e3f4a5b
                    workflow_run_id: 9b8a7c6d-5e4f-4a3b-9c2d-1e0f9a8b7c6d
                    tool_id: 33befea7-0d3e-4b1a-8f9c-2a1b3c4d5e6f
                    tool_name: pms_modify_reservation
                    args:
                      reservation_id: ABC123
                      arrival: '2026-11-12'
                      departure: '2026-11-14'
                    summary: >-
                      Move reservation ABC123 to 12–14 November as the guest
                      asked.
                    metadata:
                      approval_reason: >-
                        Move reservation ABC123 to 12–14 November as the guest
                        asked.
                      progress_message: Moving the reservation
                    requester_user_id: guest-liaison
                    requester_run_id: trace_01
                    requester_thread_id: wa:prop-1:guest:+4917000000
                    eligible_user_ids:
                      - marta
                      - jonas
                    ttl_minutes: 240
                    expires_at: '2026-10-25T18:00:00Z'
                    status: pending
                    decided_by_user_id: null
                    decided_at: null
                    decision_note: null
                    decision_channel: null
                    execution_run_id: null
                    execution_result: null
                    execution_error: null
                    created_at: '2026-10-25T14:00:00Z'
                    updated_at: '2026-10-25T14:00:00Z'
        '400':
          description: Bad filter
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Organization API key, generated in studio.sidenet.ai. Backend only —
        never in a browser.

````

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