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

# Create Analyzer

> Create a call analyzer

Create an analyzer: instructions that tell the AI what to look for in every call. Version 1 is created with it.

> [!NOTE]
>
> Needs workspace role `owner` or `admin`, or the `analytics_admin` grant.

## Request

### Headers

**Authorization** `string` *required*

Bearer token with your API key: `Bearer sk_...`

**Content-Type** `string` *required*

application/json

### Body

**name** `string` *required*

1–120 characters

**instructions** `string` *required*

1–20,000 characters. What to look for and what counts as a problem

**description** `string | null`

Up to 1,000 characters

**knowledge\_collection\_id** `string | null`

UUID of a knowledge collection the owner can see. The analyzer checks claims against it. Default `null`

**key\_terms** `string[]`

Up to 200 terms, 1–60 characters each. Words the transcription should spell correctly. Default `[]`

**language** `string | null`

Up to 20 characters. A list of language codes such as `hi,en` (up to 5, separated by commas) limits the languages used to transcribe each speaker turn, so short phrases like "haan ji" are not guessed as another language. Use it when your calls are in one or two known languages. Leave it empty to detect the language automatically

Unknown fields are rejected.

## Response

**201 Created**

```json theme={null}
{
  "success": true,
  "data": {
    "id": "3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
    "name": "Refund policy check",
    "description": "Finds wrong refund answers",
    "instructions": "Flag any call where the agent gives wrong refund information.",
    "knowledge_collection_id": null,
    "knowledge_collection_name": null,
    "key_terms": [
      "refund",
      "RMA"
    ],
    "language": "en",
    "version_no": 1,
    "version_id": "e0f1a2b3-c4d5-4e6f-8a7b-9c0d1e2f3a4b",
    "my_role": "manage",
    "counts": {
      "recordings": 0,
      "analyzed": 0,
      "with_problems": 0,
      "waiting": 0,
      "ready": 0,
      "failed": 0
    },
    "created_at": "2026-11-12T09:00:00.000Z",
    "updated_at": "2026-11-12T09:00:00.000Z"
  }
}
```

## Errors

Errors use `{ "success": false, "message": "...", "code": "..." }`. See the [overview](https://docs.60db.ai/api-reference/call-analysis/overview.md#errors) for the codes every route can return.

### This endpoint

| Status | Code | When |
| - | - | - |
| 400 | `VALIDATION_ERROR` | A field is missing or invalid. `field` names it |
| 404 | `KNOWLEDGE_COLLECTION_NOT_FOUND` | `knowledge_collection_id` is not a collection you can use |

## Example

```bash cURL theme={null}
curl -X POST 'https://api.60db.ai/deep-analytics/analysis-agents' \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"name": "Refund policy check", "instructions": "Flag any call where the agent gives wrong refund information.", "key_terms": ["refund", "RMA"], "language": "en"}'
```

```javascript JavaScript theme={null}
const res = await fetch('https://api.60db.ai/deep-analytics/analysis-agents', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer your-api-key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Refund policy check",
    "instructions": "Flag any call where the agent gives wrong refund information.",
    "key_terms": [
      "refund",
      "RMA"
    ],
    "language": "en"
  }),
});
const { success, data, message, code } = await res.json();
if (!success) throw new Error(`${code}: ${message}`);
```


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