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

# Get Agent

> Retrieve a specific agent by ID.

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.thinnest.ai/v2/agents/{public_id} \
    -H "Authorization: Bearer $THINNESTAI_API_KEY"
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.thinnest.ai/v2/agents/{public_id}"
  headers = {
      "Authorization": "Bearer " + "YOUR_THINNESTAI_API_KEY",
  }

  response = requests.get(url, headers=headers)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.thinnest.ai/v2/agents/{public_id}", {
    method: "GET",
    headers: {
      "Authorization": "Bearer " + "YOUR_THINNESTAI_API_KEY",
    },
  });

  const data = await response.json();
  console.log(data);
  ```

  ```go Go theme={null}
  package main

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

  func main() {
      req, _ := http.NewRequest("GET", "https://api.thinnest.ai/v2/agents/{public_id}", nil)
      req.Header.Set("Authorization", "Bearer YOUR_THINNESTAI_API_KEY")

      resp, err := http.DefaultClient.Do(req)
      if err != nil { panic(err) }
      defer resp.Body.Close()
      body, _ := io.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```
</RequestExample>

### Response

Returns the full agent object with nested configuration sections. Voice-related fields (`transcriber`, `voice`, `interruptionConfig`, etc.) are only populated when `voiceEnabled` is `true`.

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "ag_c47e7c97_b2f2",
    "name": "Sales Agent",
    "createdAt": "2026-03-07T10:00:00Z",
    "updatedAt": null,

    "model": {
      "provider": "openai",
      "model": "gpt-4o",
      "temperature": null,
      "maxTokens": null,
      "instructions": "You are a helpful sales assistant."
    },

    "transcriber": null,
    "voice": null,

    "tools": [
      { "name": "duckduckgo", "type": "duckduckgo", "enabled": true },
      { "name": "email", "type": "email", "enabled": true }
    ],

    "knowledgeBase": {
      "sources": [
        { "id": "42", "name": "Product FAQ", "type": "text", "status": "ready" }
      ]
    },

    "voiceEnabled": false,
    "agentType": "simple",

    "firstMessage": null,
    "endCallEnabled": true,

    "interruptionConfig": null,
    "recordingConfig": null,
    "dtmfConfig": null,
    "silenceConfig": null,
    "multilingualConfig": null,
    "callSummaryConfig": null,
    "webhookConfig": null,

    "maxDurationSeconds": 0,
    "noiseCancellation": "none",

    "publishConfig": null,
    "graphData": null
  }
  ```
</ResponseExample>

### Voice-Enabled Agent Response

When `voiceEnabled` is `true`, voice configuration sections are populated:

```json theme={null}
{
  "id": "ag_d58f8d08_c3g3",
  "name": "Phone Support Agent",
  "voiceEnabled": true,

  "model": {
    "provider": "openai",
    "model": "gpt-4o",
    "temperature": null,
    "maxTokens": null,
    "instructions": "You are a phone support agent."
  },

  "transcriber": {
    "provider": "deepgram",
    "model": "nova-2-conversationalai",
    "language": "en"
  },

  "voice": {
    "provider": "deepgram",
    "model": null,
    "voiceId": "aero-vayu",
    "speed": 1.0
  },

  "firstMessage": "Hello! How can I help you today?",
  "endCallEnabled": true,

  "interruptionConfig": {
    "enabled": true,
    "threshold": 0.5,
    "minSilenceDuration": 0.3,
    "minSpeechDuration": 0.1
  },

  "recordingConfig": {
    "enabled": false,
    "downloadEnabled": true
  },

  "dtmfConfig": {
    "enabled": false,
    "ivrDetection": false,
    "menuEnabled": false
  },

  "silenceConfig": {
    "unresponsiveTimeoutSeconds": 30,
    "unresponsiveFinalSeconds": 15,
    "fillersEnabled": false,
    "fillerPhrases": []
  },

  "multilingualConfig": {
    "enabled": false,
    "primaryLanguage": "en"
  },

  "callSummaryConfig": {
    "enabled": false,
    "prompt": ""
  },

  "webhookConfig": {
    "url": "",
    "events": [],
    "retryCount": 3
  },

  "maxDurationSeconds": 600,
  "noiseCancellation": "none"
}
```

### Response Fields

<ResponseField name="id" type="string">
  Public agent ID (ag\_\*)
</ResponseField>

<ResponseField name="name" type="string">
  Agent display name
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 creation timestamp
</ResponseField>

<ResponseField name="agentType" type="string">
  simple, graph, or workflow
</ResponseField>

<ResponseField name="voiceEnabled" type="boolean">
  Whether voice/phone calls are enabled
</ResponseField>

<ResponseField name="model.provider" type="string">
  LLM provider (openai, anthropic, google, etc.)
</ResponseField>

<ResponseField name="model.model" type="string">
  Model name (gpt-4o, claude-3-5-sonnet-20241022, etc.)
</ResponseField>

<ResponseField name="model.temperature" type="float \">
  null
</ResponseField>

<ResponseField name="model.maxTokens" type="int \">
  null
</ResponseField>

<ResponseField name="model.instructions" type="string">
  System prompt
</ResponseField>

<ResponseField name="transcriber.provider" type="string">
  STT provider (deepgram, openai, sarvam)
</ResponseField>

<ResponseField name="transcriber.model" type="string">
  STT model ID
</ResponseField>

<ResponseField name="transcriber.language" type="string">
  Language code
</ResponseField>

<ResponseField name="voice.provider" type="string">
  TTS provider (deepgram, aero, elevenlabs)
</ResponseField>

<ResponseField name="voice.voiceId" type="string">
  Voice identifier
</ResponseField>

<ResponseField name="voice.speed" type="number">
  Playback speed multiplier
</ResponseField>

<ResponseField name="tools[].name" type="string">
  Tool display name
</ResponseField>

<ResponseField name="tools[].type" type="string">
  Tool type identifier
</ResponseField>

<ResponseField name="tools[].enabled" type="boolean">
  Whether tool is active
</ResponseField>

<ResponseField name="knowledgeBase.sources[]" type="array">
  Attached knowledge sources
</ResponseField>

<ResponseField name="graphData" type="object \">
  null
</ResponseField>

### Errors

| Code  | Description                         |
| ----- | ----------------------------------- |
| `404` | Agent not found                     |
| `403` | Not authorized to access this agent |
