> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.anthropod.in/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.anthropod.in/_mcp/server.

# List conversations

GET https://anthropod.in/api/v2/conversation-analytics/conversations

Return matching records as data[], with pagination.has_more and pagination.next_cursor. Each item uses the same native payload as single-record retrieval. Required start_time/end_time are epoch seconds with an inclusive start and exclusive end, spanning at most 31 days. limit is 1–50 (default 20); sort_order is asc or desc (default desc). Optional filter applies the same standard field matching as the dashboard. The record follows the existing analytics webhook format: audio_to_text.transcript for calls or chat_transcription.transcript for chats, meta_analytics and native conversation_analytics modules. Customer analytics and customer timeline are excluded. For larger datasets, use [Create export](/v0/api-reference/exports/create-export) to obtain a CSV download link. Each export supports at most 31 days, 100,000 records and 200 MiB (209,715,200 bytes); split longer periods into adjacent windows.

Reference: https://docs.anthropod.in/api-reference/conversation-analytics/list-conversations

## Authentication

- `Authorization` header (bearer token, required) — Existing private account API key from Developer Hub. Keep it on your backend.

## Request

### Query parameters

- `service_id` (string, required) — Required authorized service. Client identity is derived from the API key. Nonempty, at most 255 characters; whitespace-only values and control characters are rejected.
- `time_field` (enum, optional, default: conversation_time) — Timestamp used for filtering and ordering. Only conversation_time is currently supported for this resource.
  - Allowed values: `conversation_time`
- `start_time` (long, required) — Inclusive start in Unix epoch seconds. Must precede end_time; maximum window is 31 days. Milliseconds are invalid.
- `end_time` (long, required) — Exclusive end in Unix epoch seconds. Maximum window is 31 days. Milliseconds are invalid.
- `channel` (enum, optional) — Optional source channel.
  - Allowed values: `call`, `chat`
- `customer_id` (string, optional) — Optional explicit linked customer ID. Nonempty, at most 255 characters; whitespace-only values and control characters are rejected.
- `analysis_status` (enum, optional) — Filter persisted analysis by completed or failed. Ingestion-queue states are not exposed.
  - Allowed values: `completed`, `failed`
- `sort_order` (enum, optional, default: desc) — Order by conversation_time, then ID in the same direction. asc returns oldest first; desc returns newest first. Keep the same sort_order when continuing with a cursor.
  - Allowed values: `asc`, `desc`
- `limit` (integer, optional, default: 20) — Maximum records per page. Accepts integers from 1 to 50; defaults to 20.
- `cursor` (string, optional) — Opaque continuation token, 1–4,096 characters; expires after 15 minutes. Repeat the same filters and sort_order. Omit for the first page. Copy pagination.next_cursor from the previous response; see the [pagination walkthrough](/v0/pagination) for first and next-page requests.
- `filter` (string, optional) — Dashboard filters as one URL-encoded JSON object (maximum 16 KB). All conditions must match. See the schema for fields, operators, and value constraints.

## Response

### 200

Successful response.

- `data` (list of object, required) — Conversation webhook payloads for this page. Customer analytics and internal fields are excluded.
  - `api_version` (string, optional) — Existing analytics payload version.
  - `id` (string, optional) — Conversation identifier.
  - `anthro_id` (string, optional) — Stored analysis identifier.
  - `timestamp` (long, optional) — Stored response timestamp in epoch seconds; the interaction time is in request_data.
  - `request_data` (map from string to any, optional) — Original client request fields returned by the analytics webhook, including service_id, customer_id and conversation_time (or call_time for older records). Internal usage and client system parameters are excluded.
  - `conversation_type` (string, optional, nullable) — Stored conversation classification.
  - `conversation_type_reason` (string, optional, nullable) — Stored classification explanation.
  - `meta_analytics` (map from string to any, optional) — Native call/chat metadata. Calls can include audio duration, talk time, language and CRM fields. Chats can include first_response_time, resolution_time, and message_count. Fields depend on available source data.
  - `audio_to_text` (object, optional) — Call transcription when stored; no role/text conversion is performed.
    - `transcript` (string, optional) — The existing complete call transcription text.
  - `chat_transcription` (object, optional) — Chat transcription when stored.
    - `transcript` (string, optional) — The existing complete chat transcription text.
  - `conversation_analytics` (object, optional) — Only the stored conversation modules. Customer analytics and customer timeline are excluded.
    - `business_insights` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to object, optional) — Map of configured parameter names to native results.
        - `ans` (any, optional) — Stored answer: string, number, boolean, object, array, or null, according to the configured parameter.
        - `explanation` (any, optional) — Stored explanation, when present; preserved in its original form.
        - `explanation_with_source` (list of map from string to any or map from string to any, optional, nullable) — Stored supporting evidence as an array of evidence objects. When no evidence is available, the stored value may be an empty array, an empty object, or null; the field may also be absent.
        - `subparameters` (map from string to object, optional, nullable) — Nested results keyed by subparameter name. These retain the same ans, explanation, and evidence structure. When there are no nested results, the stored value may be null or an empty object; the field may also be absent.
    - `custom_module` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to object, optional) — Map of configured parameter names to native results.
        - `ans` (any, optional) — Stored answer: string, number, boolean, object, array, or null, according to the configured parameter.
        - `explanation` (any, optional) — Stored explanation, when present; preserved in its original form.
        - `explanation_with_source` (list of map from string to any or map from string to any, optional, nullable) — Stored supporting evidence as an array of evidence objects. When no evidence is available, the stored value may be an empty array, an empty object, or null; the field may also be absent.
        - `subparameters` (map from string to object, optional, nullable) — Nested results keyed by subparameter name. These retain the same ans, explanation, and evidence structure. When there are no nested results, the stored value may be null or an empty object; the field may also be absent.
    - `lead_quality` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to any, optional) — Native module results. Business insights and custom-module values are keyed parameter answers; summaries, dispositions, concerns, templates, and QA retain their module-specific structure.
    - `agent_feedback` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (object, optional) — Native QA parameter scores and aggregate results.
        - `parameters` (map from string to object, optional) — QA parameter scores and explanations.
          - `ans` (any, optional) — Stored answer: string, number, boolean, object, array, or null, according to the configured parameter.
          - `explanation` (any, optional) — Stored explanation, when present; preserved in its original form.
          - `explanation_with_source` (list of map from string to any or map from string to any, optional, nullable) — Stored supporting evidence as an array of evidence objects. When no evidence is available, the stored value may be an empty array, an empty object, or null; the field may also be absent.
          - `subparameters` (map from string to object, optional, nullable) — Nested results keyed by subparameter name. These retain the same ans, explanation, and evidence structure. When there are no nested results, the stored value may be null or an empty object; the field may also be absent.
        - `overall` (object, optional) — Native aggregate score, positive/negative points, fatal status, and trigger parameters when available.
          - `output` (object, optional)
            - `ans` (integer, optional, nullable) — Native overall score from 0 to 100.
          - `fatal` (string, optional, nullable) — Stored fatal flag, normally Yes or No.
          - `fatal_trigger_parameters` (list of string, optional)
    - `conversation_summary` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to any, optional) — Native module results. Business insights and custom-module values are keyed parameter answers; summaries, dispositions, concerns, templates, and QA retain their module-specific structure.
    - `conversation_dispositions` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to any, optional) — Native module results. Business insights and custom-module values are keyed parameter answers; summaries, dispositions, concerns, templates, and QA retain their module-specific structure.
    - `concerns_and_queries` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to any, optional) — Native module results. Business insights and custom-module values are keyed parameter answers; summaries, dispositions, concerns, templates, and QA retain their module-specific structure.
    - `templates` (object, optional) — Existing module payload. Parameters remain keyed objects; module-specific outputs retain their original structure. A stored version is retained when present.
      - `version` (integer, optional) — Existing module configuration version, when stored.
      - `analytics` (map from string to any, optional) — Native module results. Business insights and custom-module values are keyed parameter answers; summaries, dispositions, concerns, templates, and QA retain their module-specific structure.
  - `error` (string, optional) — Stored processing error when processing failed.
  - `error_type` (string, optional) — Stored processing error category.
- `pagination` (object, required)
  - `has_more` (boolean, required) — Whether another page is available.
  - `next_cursor` (string, required, nullable) — Opaque continuation token; null when has_more is false. Reuse the same filters, time range and sort order with this token.

## Errors

### 400 Bad Request Error

Bad Request

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

### 401 Unauthorized Error

Unauthorized

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

### 403 Forbidden Error

Forbidden

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

### 429 Too Many Requests Error

Request allowance exceeded. Retry after the returned Retry-After interval.

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

### 500 Internal Server Error

Internal Server Error

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

### 503 Service Unavailable Error

The feature is disabled or a required dependency is temporarily unavailable.

- `type` (string, required) — Problem type URI.
- `title` (string, required) — Standard HTTP status title.
- `status` (integer, required) — HTTP status code.
- `detail` (string, required) — Description of this occurrence.
- `code` (string, required) — Machine-readable error code.
- `request_id` (string, required) — Reference to use when contacting support.

## Examples

**Response**

```json
{
  "data": [
    {
      "api_version": "v2",
      "id": "conversation_123",
      "anthro_id": "analysis_123",
      "timestamp": 1788220890,
      "request_data": {
        "call_direction": "Outbound",
        "conversation_time": 1788220800,
        "customer_id": "customer_123",
        "employee_id": "agent_123",
        "service_id": "service_123"
      },
      "conversation_type": "Proper Conversation",
      "conversation_type_reason": "The customer discussed a follow-up.",
      "meta_analytics": {
        "agent_talk_duration": 20,
        "audio_duration": 45,
        "customer_talk_duration": 18,
        "lead_source": "Website",
        "primary_language": "English"
      },
      "audio_to_text": {
        "transcript": "Customer: Please call me tomorrow.\nAgent: I have noted your request."
      },
      "conversation_analytics": {
        "business_insights": {
          "version": 3,
          "analytics": {
            "callback_priority": {
              "ans": "High",
              "explanation": "The customer requested a callback tomorrow.",
              "explanation_with_source": [
                {
                  "sources": [
                    {
                      "end_timestamp": "00:00:04.500",
                      "segment_id": "S1",
                      "start_timestamp": "00:00:02.000"
                    }
                  ],
                  "text": "Please call me tomorrow."
                }
              ],
              "subparameters": {
                "callback_requested": {
                  "ans": true,
                  "explanation": "Customer requested a callback."
                }
              }
            },
            "interested_locations": {
              "ans": [
                "Delhi",
                "Mumbai"
              ],
              "explanation_with_source": []
            }
          }
        },
        "custom_module": {
          "version": 2,
          "analytics": {
            "callback_required": {
              "ans": true,
              "subparameters": {
                "preferred_day": {
                  "ans": "Tomorrow"
                }
              }
            }
          }
        },
        "agent_feedback": {
          "version": 4,
          "analytics": {
            "parameters": {
              "greeting": {
                "ans": 5,
                "explanation": "Agent greeted the customer."
              }
            },
            "overall": {
              "output": {
                "ans": 92
              },
              "fatal": "No",
              "fatal_trigger_parameters": []
            }
          }
        },
        "conversation_summary": {
          "version": 1,
          "analytics": {
            "call_summary": "Customer requested a callback tomorrow.",
            "call_summary_with_source": [
              {
                "sources": [
                  {
                    "segment_id": "S1"
                  }
                ],
                "text": "Callback requested."
              }
            ]
          }
        }
      }
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": null
  }
}
```

**SDK Code**

```python
import requests

url = "https://anthropod.in/api/v2/conversation-analytics/conversations"

querystring = {"end_time":"1788307200","service_id":"service_123","sort_order":"desc","start_time":"1788220800","time_field":"conversation_time"}

headers = {"Authorization": "Bearer <accountApiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time';
const options = {method: 'GET', headers: {Authorization: 'Bearer <accountApiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <accountApiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <accountApiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time")
  .header("Authorization", "Bearer <accountApiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time', [
  'headers' => [
    'Authorization' => 'Bearer <accountApiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <accountApiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <accountApiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://anthropod.in/api/v2/conversation-analytics/conversations?end_time=1788307200&service_id=service_123&sort_order=desc&start_time=1788220800&time_field=conversation_time")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```