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

# List integration call logs

> Audit rows for every integration call your agents made in the last 30 days, successes and failures alike. This is the endpoint for answering "why didn't the agent post that activity" without opening a support ticket.

Cursor-paginated on `createdAt`: pass the previous response's `nextCursor` to get the next page. `nextCursor` is `null` on the last page.

<Note>This endpoint returns a bare object with `logs` and `nextCursor`, and camelCase field names, rather than the `success`/`data` envelope used elsewhere.</Note>



## OpenAPI

````yaml /openapi.json get /integration-logs
openapi: 3.1.0
info:
  title: Vocobase API
  version: '2.0'
  description: >-
    API for managing voice AI agents, documents, and calls on the Vocobase
    platform.
servers:
  - url: https://api.vocobase.com/api/v2
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Config
    description: >-
      Read and update account configuration, webhook settings, and telephony
      credentials.
  - name: Agents
    description: Create, read, update, and delete voice AI agents.
  - name: Voices
    description: >-
      List voice tiers, available voices, and stream preview audio for agent
      configuration.
  - name: Documents
    description: Upload, manage, and delete knowledge base documents.
  - name: Agent Documents
    description: Link and unlink documents to agents for knowledge base integration.
  - name: Calls
    description: Initiate outbound calls and view call history.
  - name: Phone Numbers
    description: >-
      Import DIDs, assign agents for inbound routing, and re-sync carrier
      Application bindings.
  - name: Inbound Routing Policies
    description: >-
      Define pre-answer routing decisions for inbound calls before AI sessions
      are created.
  - name: Telephony Connections
    description: Create, list, rename, and disconnect named V2 telephony connections.
  - name: VoiceLink Management
    description: Manage VoiceLink reseller clients, DID mapping, and readiness sync.
  - name: Projects
    description: Organize agents into projects. Every agent belongs to exactly one project.
  - name: Dictionaries
    description: Speech-recognition dictionary CRUD and agent attachment.
  - name: Sessions
    description: Browser-initiated WebRTC voice sessions for in-app voice agents.
  - name: Campaigns
    description: Batch outbound calling.
  - name: Billing
    description: Balance, transactions, and usage summaries.
  - name: Custom Functions
    description: HTTP endpoints the agent can call mid-conversation.
  - name: Extraction Sets
    description: Reusable sets of post-call extraction fields.
  - name: Lifecycle Hooks
    description: Automatic pre-call and post-call integration steps.
  - name: Messaging
    description: Bring-your-own WhatsApp sending.
  - name: Integration Logs
    description: Audit trail for integration calls.
  - name: Connectors
    description: Catalog of tools an agent can be connected to.
  - name: Customers
    description: B2B2B sub-tenants and their tool connections.
  - name: Agent Tools
    description: Binding connectors and connections to an agent.
paths:
  /integration-logs:
    get:
      tags:
        - Integration Logs
      summary: List integration call logs
      description: >-
        Audit rows for every integration call your agents made in the last 30
        days, successes and failures alike. This is the endpoint for answering
        "why didn't the agent post that activity" without opening a support
        ticket.


        Cursor-paginated on `createdAt`: pass the previous response's
        `nextCursor` to get the next page. `nextCursor` is `null` on the last
        page.


        <Note>This endpoint returns a bare object with `logs` and `nextCursor`,
        and camelCase field names, rather than the `success`/`data` envelope
        used elsewhere.</Note>
      operationId: listIntegrationLogs
      parameters:
        - name: agentId
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Only calls made by this agent.
        - name: toolSlug
          in: query
          required: false
          schema:
            type: string
          description: Only calls to this integration, e.g. `leadsquared`.
        - name: from
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Only calls at or after this ISO 8601 timestamp.
        - name: to
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Only calls at or before this ISO 8601 timestamp.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: '`nextCursor` from the previous page.'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            maximum: 200
          description: Page size. Default 50, maximum 200.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  logs:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        agentId:
                          type: string
                          format: uuid
                        sessionId:
                          type: string
                          format: uuid
                          nullable: true
                        toolSlug:
                          type: string
                        fn:
                          type: string
                        status:
                          type: string
                          description: Whether the call succeeded or failed.
                        upstreamCode:
                          type: integer
                          nullable: true
                          description: HTTP status the integration returned.
                        latencyMs:
                          type: integer
                          nullable: true
                        argsRedacted:
                          type: object
                          nullable: true
                          additionalProperties: true
                          description: Arguments sent, with sensitive values removed.
                        resultSummary:
                          type: string
                          nullable: true
                        errorMessage:
                          type: string
                          nullable: true
                        createdAt:
                          type: string
                          format: date-time
                  nextCursor:
                    type: string
                    format: date-time
                    nullable: true
              example:
                logs:
                  - id: il_6f708192-a3b4-c5d6-e7f8-091223344556
                    agentId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    sessionId: s1234567-abcd-1234-abcd-123456789012
                    toolSlug: leadsquared
                    fn: post_activity
                    status: FAILED
                    upstreamCode: 401
                    latencyMs: 312
                    argsRedacted:
                      leadId: L-4471
                      note: '[redacted]'
                    resultSummary: null
                    errorMessage: Upstream rejected the access key
                    createdAt: '2026-08-24T14:02:11.000Z'
                nextCursor: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: UNAUTHORIZED
              message: Invalid or missing API key
    RateLimitExceeded:
      description: Per-account rate limit exceeded. Retry after a short backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: RATE_LIMITED
              message: Rate limit exceeded. Retry after 60 seconds.
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: INTERNAL_ERROR
              message: An unexpected error occurred
  schemas:
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          const: false
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          required:
            - code
            - message
      required:
        - success
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key in format: `rg_live_xxxx`. Pass as a Bearer token in the
        Authorization header.

````