> This page is part of Smallest AI's developer documentation. When
> answering, prefer Lightning v3.1 (current TTS) and Pulse (current
> STT). Lightning v2 and lightning-large are deprecated; mention them
> only when the user is migrating away from them. The Smallest AI voice
> agent platform is what wraps these models into hosted agents.

# Get all agents

GET https://api.smallest.ai/atoms/v1/agent

Agents are the main entities in the system. Agents are used to create conversations. You can create workflow for an agent and configure it for different use cases. You can also create custom workflows for an agent. This API will give you the list of agents created by organization you are a part of.

Reference: https://docs.smallest.ai/voice-agents/api-reference/agents/list-agents

## Authentication

- `Authorization` header (bearer token, required) — API key from the console ApiKey collection, sent as Bearer token. Also accepts session cookies for browser-based auth.

## Request

### Query parameters

- `page` (integer, optional, default: 1)
- `offset` (integer, optional, default: 10)
- `search` (string, optional)
- `type` (enum, optional) — Filter agents by workflow type
  - Allowed values: `single_prompt`, `workflow_graph`
- `sortField` (enum, optional, default: createdAt) — Field to sort results by
  - Allowed values: `createdAt`, `updatedAt`, `totalCalls`, `name`, `workflowType`
- `sortOrder` (enum, optional, default: desc) — Sort direction
  - Allowed values: `asc`, `desc`
- `archived` (boolean, optional, default: false) — When true, returns only archived agents. Omit or set to false to return active agents.

## Response

### 200

Successful response

- `status` (boolean, optional)
- `data` (object, optional)
  - `agents` (list of object, optional)
    - `_id` (string, optional) — The ID of the agent
    - `name` (string, optional) — The name of the agent
    - `description` (string, optional) — The description of the agent
    - `backgroundSound` (enum, optional) — Ambient background sound during calls. Options: '' (none), 'office', 'cafe', 'call_center', 'static'.
      - Allowed values: ``, `office`, `cafe`, `call_center`, `static`
    - `organization` (string, optional) — The organization ID of the agent
    - `workflowId` (string, optional) — The workflow ID of the agent
    - `workflowType` (enum, optional) — The type of workflow used by the agent
      - Allowed values: `workflow_graph`, `single_prompt`, `multi_agents`
    - `createdBy` (string, optional) — The user ID of the user who created the agent
    - `globalKnowledgeBaseId` (string, optional) — The global knowledge base ID of the agent
    - `language` (object, optional) — The language configuration of the agent
      - `default` (enum, optional) — The default language of the agent
        - Allowed values: `en`, `hi`, `mr`, `gu`, `ta`, `te`, `kn`, `ml`, `es`, `north_indic`, `bn`, `or`, `fr`, `de`, `it`, `nl`, `pt`, `ru`
      - `switching` (object, optional) — Language switching configuration for the agent
        - `isEnabled` (boolean, optional) — Whether language switching is enabled for the agent
        - `minWordsForDetection` (double, optional) — Minimum number of words required for language detection
        - `strongSignalThreshold` (double, optional) — Threshold for strong language signal detection
        - `weakSignalThreshold` (double, optional) — Threshold for weak language signal detection
        - `minConsecutiveForWeakThresholdSwitch` (double, optional) — Minimum consecutive detections required for weak threshold language switch
      - `supported` (list of string, optional) — The supported languages of the agent
    - `synthesizer` (object, optional) — The synthesizer (TTS) configuration of the agent
      - `voiceConfig` (object, optional) — The voice configuration of the synthesizer
        - `model` (enum, optional, default: waves_lightning_v3_1) — The TTS model of the synthesizer. Use `waves_lightning_v3_1` for the recommended Waves voice path (default), or `gpt-realtime` / `gpt-realtime-mini` for OpenAI realtime models.
          - Allowed values: `waves_lightning_v3_1`, `gpt-realtime`, `gpt-realtime-mini`
        - `voiceId` (string, optional, default: nyah) — The voice ID of the synthesizer.
        - `gender` (enum, optional, default: female)
          - Allowed values: `male`, `female`
      - `speed` (double, optional, default: 1.2) — The speed of the synthesizer
      - `consistency` (double, optional, default: 0.5) — The consistency of the synthesizer
      - `similarity` (double, optional, default: 0) — The similarity of the synthesizer
      - `enhancement` (double, optional, default: 1) — The enhancement of the synthesizer
      - `sampleRate` (double, optional) — The audio sample rate used by the synthesizer
    - `slmModel` (enum, optional) — The LLM model to use for the agent. LLM model will be used to generate the response and take decisions based on the user's query.
      - Allowed values: `electron`, `electron-kogta`, `electron-kogta-v2`, `gpt-4o`, `gpt-4.1`, `gpt-5.2`, `gpt-5.2-azure`, `gpt-realtime`, `gpt-realtime-mini`
    - `defaultVariables` (object, optional) — The default variables to use for the agent. These variables will be used if no variables are provided when initiating a conversation with the agent.
    - `preCallAPI` (object, optional) — Configuration for an API call to be made before the call starts. The response variables can be injected into the agent's prompt.
      - `url` (string, required) — The URL of the API endpoint to call.
      - `method` (enum, required) — The HTTP method to use for the API call.
        - Allowed values: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`
      - `isEnabled` (boolean, optional, default: false) — Whether the pre-call API is enabled.
      - `headers` (map from string to string, optional) — Optional HTTP headers to include in the request.
      - `body` (object, optional) — Optional request body for POST/PUT/PATCH requests.
      - `timeout` (integer, optional, default: 5) — Timeout in seconds for the API call.
      - `queryParams` (object, optional) — Optional query parameters to include in the request URL.
      - `responseVariables` (list of object, optional) — List of variables to extract from the API response using JSON path expressions.
        - `variableName` (string, required) — The name of the variable to inject into the agent prompt.
        - `jsonPath` (string, required) — JSON path expression to extract the value from the API response.
    - `createdAt` (datetime, optional) — The date and time when the agent was created
    - `updatedAt` (datetime, optional) — The date and time when the agent was last updated
    - `avatarUrl` (string, optional) — URL of the agent's avatar image
    - `firstMessage` (string, optional) — The opening message spoken by the agent at the start of a call
    - `allowInterruptions` (boolean, optional) — Whether the agent can be interrupted mid-speech by the caller
    - `waitForUserToSpeakFirst` (boolean, optional) — When true, the agent waits for the caller to speak before responding
    - `totalCalls` (double, optional) — Total number of calls made with this agent
    - `transcriberType` (string, optional) — The speech-to-text engine used for transcription
    - `globalPrompt` (string, optional) — A global system prompt prepended to all agent interactions
    - `archived` (boolean, optional) — Whether the agent has been archived. Archived agents are excluded from default listings.
    - `archivedAt` (datetime, optional) — The date and time when the agent was archived
    - `activeVersionId` (string, optional) — ID of the currently-active published version. Matches `versionId`.
    - `versionId` (string, optional) — Alias for `activeVersionId`.
    - `phoneNumber` (list of string, optional) — Phone numbers attached to this agent (E.164 strings). Only present when the agent has been linked to one or more telephony products.
    - `visibleToEveryone` (boolean, optional, default: false) — Whether the agent is visible to all members of the organization (vs. only the creator).
    - `speechFormatting` (boolean, optional) — Apply LLM-side speech formatting (e.g. expanding "$100" to "one hundred dollars") before passing text to the synthesizer. Boolean; no default — when unset the platform applies the per-organization default.
    - `muteUserUntilFirstBotResponse` (boolean, optional, default: false) — When true, the user microphone is muted until the agent has spoken its first response.
    - `interruptionBackoffTimer` (double, optional) — Seconds to wait after an interruption before the agent resumes speaking.
    - `enableStyleGuide` (boolean, optional, default: true) — Whether to apply the platform's style-guide post-processing on agent responses.
    - `callDispositionConfig` (string, optional, default: ) — Free-form prompt used for call disposition classification (separate from `postCallAnalyticsConfig.dispositionMetrics`).
    - `voiceMailDetectionConfig` (object, optional) — Voicemail detection settings.
      - `enabled` (boolean, optional, default: false)
      - `endText` (string, optional, default: Terminating call, you can call us back anytime. Thank you for calling.) — Text spoken before the call is terminated when voicemail is detected.
    - `smartTurnConfig` (object, optional) — Smart end-of-turn detection settings.
      - `isEnabled` (boolean, optional)
      - `waitTimeInSecs` (double, optional)
    - `voiceDetectionConfig` (object, optional) — VAD (voice activity detection) tuning.
      - `confidence` (double, optional)
      - `minVolume` (double, optional)
      - `triggerTimeInSecs` (double, optional)
      - `releaseTimeInSecs` (double, optional)
    - `denoisingConfig` (object, optional) — Audio denoising settings.
      - `isEnabled` (boolean, optional)
    - `redactionConfig` (object, optional) — PII/PCI redaction settings applied to transcripts.
      - `isEnabled` (boolean, optional)
    - `pronunciationDicts` (list of object, optional) — Custom pronunciation dictionary applied before synthesis.
      - `word` (string, required)
      - `pronunciation` (string, required)
    - `llmIdleTimeoutConfig` (object, optional) — Per-channel idle timeouts (seconds) after which the LLM is nudged when the user stops speaking. `maxRetries` bounds how many nudges before the call ends.
      - `chatTimeoutTimeInSecs` (double, optional)
      - `webcallTimeoutTimeInSecs` (double, optional)
      - `telephonyTimeoutTimeInSecs` (double, optional)
      - `maxRetries` (double, optional)
    - `sessionTimeoutConfig` (object, optional) — Maximum session duration before the call is automatically ended.
      - `timeoutTimeInSecs` (double, optional)
    - `timezone` (object, optional) — Agent timezone — used for time-of-day-sensitive prompts and analytics bucketing.
      - `label` (string, optional, default: (GMT+0:00) UTC)
      - `offset` (double, optional, default: 0)
    - `postCallAnalyticsConfig` (object, optional) — Per-agent post-call analytics configuration. Evaluated after each call ends and surfaced in call logs under the `postCallAnalytics` field.
      - `dispositionMetrics` (list of object, optional, default: []) — Structured metrics extracted from each completed call.
        - `identifier` (string, required) — Stable machine identifier. Lowercase letters, digits, and underscores only.
        - `dispositionMetricPrompt` (string, required) — Natural-language question evaluated against the transcript after the call ends.
        - `dispositionMetricType` (enum, required) — Data type returned by the metric.
          - Allowed values: `STRING`, `BOOLEAN`, `INTEGER`, `ENUM`, `DATETIME`
        - `choices` (list of string, optional) — Required when `dispositionMetricType = ENUM`. Allowed values.
      - `useInternalAnalyticsModel` (boolean, optional, default: true) — Use the internal analytics model. When false, falls back to the agent's own LLM.
      - `useReasoningModel` (boolean, optional, default: false) — Route analytics evaluation through the reasoning model for higher-quality results at a latency/cost tradeoff.
      - `successMetrics` (list of object, optional, default: [], deprecated) — **Deprecated** — will be removed in a future version. Use `dispositionMetrics` instead. Kept here because the backend still accepts it on writes and returns it on reads.
        - `identifier` (string, required)
        - `successMetricPrompt` (string, required)
        - `successMetricType` (enum, required)
          - Allowed values: `NUMERIC_SCALE`, `PERCENTAGE_SCALE`, `PASS_FAIL`, `DESCRIPTIVE_SCALE`
      - `summaryPrompt` (string, optional, default: , deprecated) — **Deprecated** — no longer used in post-call analysis and will be removed in a future version. Kept here because the backend still accepts it on writes and returns it on reads.
    - `widgetConfig` (object, optional) — Chat-widget rendering configuration (theme, copy, consent prompt). Only relevant when the agent is exposed via the embeddable widget; ignored by voice-only agents.
      - `position` (enum, optional, default: bottom-right)
        - Allowed values: `bottom-right`, `bottom-left`, `top-right`, `top-left`
      - `size` (enum, optional, default: full)
        - Allowed values: `tiny`, `compact`, `full`
      - `mode` (enum, optional, default: chat)
        - Allowed values: `chat`, `voice`
      - `theme` (enum, optional, default: light)
        - Allowed values: `light`, `dark`
      - `baseColor` (string, optional, default: #ffffff)
      - `accentColor` (string, optional, default: #2d9d9f)
      - `agentBubbleColor` (string, optional, default: #f3f4f6)
      - `textOnAccentColor` (string, optional, default: #FFFFFF)
      - `secondaryTextColor` (string, optional, default: #6b7280)
      - `primaryTextColor` (string, optional, default: #111827)
      - `startButtonText` (string, optional, default: Start)
      - `endButtonText` (string, optional, default: End)
      - `ctaName` (string, optional, default: Talk to Atoms)
      - `widgetName` (string, optional, default: Atoms)
      - `avatarUrl` (string, optional, nullable)
      - `chatPlaceholder` (string, optional, default: Type your message...)
      - `consentRequired` (boolean, optional, default: false)
      - `consentTitle` (string, optional, default: Privacy Agreement)
      - `consentContent` (string, optional) — Long-form consent body shown before the user can interact.
      - `assistantId` (string, optional, nullable)
      - `allowlist` (list of string, optional) — Allowed origin hostnames for widget embedding.
    - `_resolvedConfig` (object, optional) — The resolved config of the target version, merged into a flat shape. Not returned in list responses (`GET /agent`). Only populated in single-agent responses (`GET /agent/{id}`) when the agent has a published, activated version. Can contain up to \~30 fields depending on which config sections are set.
      - `prompt` (string, optional) — Active version's single-prompt text.
      - `tools` (list of object, optional) — Active version's configured tools.
        - `type` (enum, required) — The type of function/tool
          - Allowed values: `end_call`, `transfer_call`, `api_call`, `client_tool`, `extract_dynamic_variables`, `knowledge_base_search`
        - `name` (string, required) — Unique name for the function (no spaces)
        - `description` (string, required) — Description of what the function does
        - `enabled` (boolean, optional, default: true) — Whether the tool is enabled
        - `transferNumber` (string, optional) — Required for transfer_call type. Phone number to transfer the call to (E.164 format)
        - `transferOption` (object, optional) — Required for transfer_call type. Controls cold vs warm transfer behavior.
          - `type` (enum, optional, default: cold_transfer) — Transfer mode. `cold_transfer` hands off immediately; `warm_transfer` briefs the receiving party first.
            - Allowed values: `cold_transfer`, `warm_transfer`
          - `privateHandoffOption` (object, optional, nullable) — Private briefing delivered to the transfer target before the caller is connected. Only used when `type = warm_transfer`.
            - `type` (enum, optional) — `prompt` generates briefing from the LLM; `static` plays fixed text.
            - `prompt` (string, optional) — The prompt or static text for the private handoff.
          - `publicHandoffOption` (object, optional, nullable) — Message played to the caller while the transfer is being set up. Only used when `type = warm_transfer`.
            - `type` (enum, optional)
            - `prompt` (string, optional)
        - `onHoldMusic` (enum, optional, default: ringtone) — Optional for transfer_call type. Audio played to the caller while the transfer is in progress.
          - Allowed values: `ringtone`, `relaxing_sound`, `uplifting_beats`, `none`
        - `transferOnlyIfHuman` (boolean, optional, default: true) — Optional for transfer_call type. If true, the call is only transferred when a human is detected on the receiving end (voicemail/IVR skipped).
        - `detectionTimeout` (integer, optional, default: 30) — Optional for transfer_call type. Seconds to wait for human detection before giving up (5–60).
        - `url` (string, optional) — Required for api_call type. The URL to make the HTTP request to.
        - `method` (enum, optional) — Required for api_call type. HTTP method to use.
          - Allowed values: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`
        - `timeout` (integer, optional, default: 5000) — Optional for api_call type. Request timeout in milliseconds (1000–30000).
        - `headers` (map from string to string, optional) — Optional for api_call type. Static HTTP headers as a key/value map.
        - `headersArray` (list of object, optional) — Optional for api_call type. Headers as an array of key/value objects (alternative to `headers` map).
          - `key` (string, required)
          - `value` (string, required)
        - `queryParams` (list of object, optional) — Optional for api\_call type. Query parameters to include in the request URL. Values support variable templating like `{{order_id}}`.
          - `key` (string, required)
          - `value` (string, required)
        - `requestBody` (string, optional) — Optional for api_call type. Raw request body as a JSON string. Supports variable templating.
        - `llmParameters` (list of object, optional) — Optional for api_call type. Parameters the LLM can supply dynamically at runtime.
          - `name` (string, required) — Parameter name
          - `description` (string, required) — What the parameter represents
          - `type` (enum, required)
            - Allowed values: `text`, `number`, `boolean`, `enum`
          - `values` (list of string, optional) — Required when type is `enum`. Allowed values.
          - `required` (boolean, optional, default: false)
        - `timeoutMs` (integer, optional, default: 1000) — Optional for client_tool type. How long the agent waits for `function_call.result` before recovering verbally.
        - `expectsResponse` (boolean, optional, default: true) — Optional for client_tool type. When false, fire-and-forget — the app acts on the event and the agent does not wait for a result.
        - `responseVariables` (list of object, optional, default: []) — Optional for api_call type. Variables to extract from the API response into the agent's variable store.
          - `variableName` (string, required) — Name to store the extracted value under
          - `jsonPath` (string, required) — JSON path to extract the value from the response
        - `auth` (object, optional) — Optional for `api_call` type. Authentication for the outbound request. Credentials are referenced **by secret name** (from the org Secrets vault, see `POST /secret`), never inline. At call time the platform decrypts the secret, injects it into the request, and strips the `auth` block before the config reaches the runtime, cache, or webhooks. `token`, `value`, and `password` below are secret names, not literal values.
          - `type` (enum, required) — Auth scheme. `bearer` sends `Authorization: Bearer <secret>`; `api_key` sends the secret in a header or query param you name; `basic` sends `Authorization: Basic <base64(username:secret)>`.
            - Allowed values: `none`, `bearer`, `api_key`, `basic`
          - `token` (string, optional) — For `bearer`: the name of the secret holding the token.
          - `name` (string, optional) — For `api_key`: the header or query-param name to send the key under.
          - `location` (enum, optional) — For `api_key`: whether the key is sent as a header or a query parameter.
            - Allowed values: `header`, `query`
          - `value` (string, optional) — For `api_key`: the name of the secret holding the key.
          - `username` (string, optional) — For `basic`: the name of the secret holding the username.
          - `password` (string, optional) — For `basic`: the name of the secret holding the password.
        - `variablesExtractionSchema` (list of object, optional) — Required for extract_dynamic_variables type. Schema defining variables to extract from the conversation.
          - `name` (string, required) — Name of the variable to extract
          - `description` (string, required) — What this variable represents
          - `type` (enum, required)
            - Allowed values: `text`, `number`, `boolean`, `enum`
          - `values` (list of string, optional) — Required when type is `enum`. List of possible values.
        - `knowledgeBaseId` (string, optional) — Required for knowledge_base_search type. ID of the knowledge base to search.
        - `fillerPhrases` (list of string, optional, default: []) — Optional for knowledge_base_search and client_tool types. Phrases spoken while the tool runs so the pause is not silent.
      - `postCallAnalyticsConfig` (object, optional) — Per-agent post-call analytics configuration. Evaluated after each call ends and surfaced in call logs under the `postCallAnalytics` field.
        - `dispositionMetrics` (list of object, optional, default: []) — Structured metrics extracted from each completed call.
          - `identifier` (string, required) — Stable machine identifier. Lowercase letters, digits, and underscores only.
          - `dispositionMetricPrompt` (string, required) — Natural-language question evaluated against the transcript after the call ends.
          - `dispositionMetricType` (enum, required) — Data type returned by the metric.
            - Allowed values: `STRING`, `BOOLEAN`, `INTEGER`, `ENUM`, `DATETIME`
          - `choices` (list of string, optional) — Required when `dispositionMetricType = ENUM`. Allowed values.
        - `useInternalAnalyticsModel` (boolean, optional, default: true) — Use the internal analytics model. When false, falls back to the agent's own LLM.
        - `useReasoningModel` (boolean, optional, default: false) — Route analytics evaluation through the reasoning model for higher-quality results at a latency/cost tradeoff.
        - `successMetrics` (list of object, optional, default: [], deprecated) — **Deprecated** — will be removed in a future version. Use `dispositionMetrics` instead. Kept here because the backend still accepts it on writes and returns it on reads.
          - `identifier` (string, required)
          - `successMetricPrompt` (string, required)
          - `successMetricType` (enum, required)
            - Allowed values: `NUMERIC_SCALE`, `PERCENTAGE_SCALE`, `PASS_FAIL`, `DESCRIPTIVE_SCALE`
        - `summaryPrompt` (string, optional, default: , deprecated) — **Deprecated** — no longer used in post-call analysis and will be removed in a future version. Kept here because the backend still accepts it on writes and returns it on reads.
      - `callDispositionConfig` (string, optional)
      - `modelName` (string, optional) — LLM model name on the resolved version.
      - `transcriberType` (string, optional) — STT engine in use on the resolved version.
      - `defaultLanguage` (enum, optional) — Default language set on the resolved version.
        - Allowed values: `en`, `hi`, `mr`, `gu`, `ta`, `te`, `kn`, `ml`, `es`, `north_indic`, `bn`, `or`, `fr`, `de`, `it`, `nl`, `pt`, `ru`
      - `supportedLanguages` (list of string, optional) — Supported languages on the resolved version.
      - `languageSwitching` (object, optional) — Language-switching configuration on the resolved version.
      - `firstMessage` (string, optional) — Opening message on the resolved version.
      - `globalPrompt` (string, optional) — Global prompt on the resolved version (workflow_graph agents only).
      - `preCallAPI` (object, optional) — Pre-call API configuration on the resolved version.
      - `workflowGraph` (object, optional) — Full node graph for workflow_graph agents. Null for single_prompt agents.
      - `muteUserUntilFirstBotResponse` (boolean, optional)
      - `allowInterruptions` (boolean, optional)
      - `voiceDetectionConfig` (object, optional)
      - `smartTurnConfig` (object, optional)
      - `backgroundSound` (string, optional)
      - `denoisingConfig` (object, optional)
      - `redactionConfig` (object, optional)
      - `llmIdleTimeoutConfig` (object, optional)
      - `sessionTimeoutConfig` (object, optional)
    - `_configSource` (enum, optional) — Only present when `?draftId` or `?versionId` query params are used. Indicates which config source was resolved into `_resolvedConfig`.
      - Allowed values: `active`, `draft`, `version`
    - `_versionedWorkflow` (object, optional) — **Deprecated — internal use only.** Legacy field present whenever `_resolvedConfig` is populated. Mirrors a subset of `_resolvedConfig` (`prompt`, `tools`, `workflowGraph`). Kept for backward compatibility with existing frontend code. Ignore in new integrations.
      - `prompt` (string, optional)
      - `tools` (list of object, optional)
        - `type` (enum, required) — The type of function/tool
          - Allowed values: `end_call`, `transfer_call`, `api_call`, `client_tool`, `extract_dynamic_variables`, `knowledge_base_search`
        - `name` (string, required) — Unique name for the function (no spaces)
        - `description` (string, required) — Description of what the function does
        - `enabled` (boolean, optional, default: true) — Whether the tool is enabled
        - `transferNumber` (string, optional) — Required for transfer_call type. Phone number to transfer the call to (E.164 format)
        - `transferOption` (object, optional) — Required for transfer_call type. Controls cold vs warm transfer behavior.
          - `type` (enum, optional, default: cold_transfer) — Transfer mode. `cold_transfer` hands off immediately; `warm_transfer` briefs the receiving party first.
            - Allowed values: `cold_transfer`, `warm_transfer`
          - `privateHandoffOption` (object, optional, nullable) — Private briefing delivered to the transfer target before the caller is connected. Only used when `type = warm_transfer`.
            - `type` (enum, optional) — `prompt` generates briefing from the LLM; `static` plays fixed text.
            - `prompt` (string, optional) — The prompt or static text for the private handoff.
          - `publicHandoffOption` (object, optional, nullable) — Message played to the caller while the transfer is being set up. Only used when `type = warm_transfer`.
            - `type` (enum, optional)
            - `prompt` (string, optional)
        - `onHoldMusic` (enum, optional, default: ringtone) — Optional for transfer_call type. Audio played to the caller while the transfer is in progress.
          - Allowed values: `ringtone`, `relaxing_sound`, `uplifting_beats`, `none`
        - `transferOnlyIfHuman` (boolean, optional, default: true) — Optional for transfer_call type. If true, the call is only transferred when a human is detected on the receiving end (voicemail/IVR skipped).
        - `detectionTimeout` (integer, optional, default: 30) — Optional for transfer_call type. Seconds to wait for human detection before giving up (5–60).
        - `url` (string, optional) — Required for api_call type. The URL to make the HTTP request to.
        - `method` (enum, optional) — Required for api_call type. HTTP method to use.
          - Allowed values: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`
        - `timeout` (integer, optional, default: 5000) — Optional for api_call type. Request timeout in milliseconds (1000–30000).
        - `headers` (map from string to string, optional) — Optional for api_call type. Static HTTP headers as a key/value map.
        - `headersArray` (list of object, optional) — Optional for api_call type. Headers as an array of key/value objects (alternative to `headers` map).
          - `key` (string, required)
          - `value` (string, required)
        - `queryParams` (list of object, optional) — Optional for api\_call type. Query parameters to include in the request URL. Values support variable templating like `{{order_id}}`.
          - `key` (string, required)
          - `value` (string, required)
        - `requestBody` (string, optional) — Optional for api_call type. Raw request body as a JSON string. Supports variable templating.
        - `llmParameters` (list of object, optional) — Optional for api_call type. Parameters the LLM can supply dynamically at runtime.
          - `name` (string, required) — Parameter name
          - `description` (string, required) — What the parameter represents
          - `type` (enum, required)
            - Allowed values: `text`, `number`, `boolean`, `enum`
          - `values` (list of string, optional) — Required when type is `enum`. Allowed values.
          - `required` (boolean, optional, default: false)
        - `timeoutMs` (integer, optional, default: 1000) — Optional for client_tool type. How long the agent waits for `function_call.result` before recovering verbally.
        - `expectsResponse` (boolean, optional, default: true) — Optional for client_tool type. When false, fire-and-forget — the app acts on the event and the agent does not wait for a result.
        - `responseVariables` (list of object, optional, default: []) — Optional for api_call type. Variables to extract from the API response into the agent's variable store.
          - `variableName` (string, required) — Name to store the extracted value under
          - `jsonPath` (string, required) — JSON path to extract the value from the response
        - `auth` (object, optional) — Optional for `api_call` type. Authentication for the outbound request. Credentials are referenced **by secret name** (from the org Secrets vault, see `POST /secret`), never inline. At call time the platform decrypts the secret, injects it into the request, and strips the `auth` block before the config reaches the runtime, cache, or webhooks. `token`, `value`, and `password` below are secret names, not literal values.
          - `type` (enum, required) — Auth scheme. `bearer` sends `Authorization: Bearer <secret>`; `api_key` sends the secret in a header or query param you name; `basic` sends `Authorization: Basic <base64(username:secret)>`.
            - Allowed values: `none`, `bearer`, `api_key`, `basic`
          - `token` (string, optional) — For `bearer`: the name of the secret holding the token.
          - `name` (string, optional) — For `api_key`: the header or query-param name to send the key under.
          - `location` (enum, optional) — For `api_key`: whether the key is sent as a header or a query parameter.
            - Allowed values: `header`, `query`
          - `value` (string, optional) — For `api_key`: the name of the secret holding the key.
          - `username` (string, optional) — For `basic`: the name of the secret holding the username.
          - `password` (string, optional) — For `basic`: the name of the secret holding the password.
        - `variablesExtractionSchema` (list of object, optional) — Required for extract_dynamic_variables type. Schema defining variables to extract from the conversation.
          - `name` (string, required) — Name of the variable to extract
          - `description` (string, required) — What this variable represents
          - `type` (enum, required)
            - Allowed values: `text`, `number`, `boolean`, `enum`
          - `values` (list of string, optional) — Required when type is `enum`. List of possible values.
        - `knowledgeBaseId` (string, optional) — Required for knowledge_base_search type. ID of the knowledge base to search.
        - `fillerPhrases` (list of string, optional, default: []) — Optional for knowledge_base_search and client_tool types. Phrases spoken while the tool runs so the pause is not silent.
      - `workflowGraph` (object, optional)
    - `allowInboundCall` (boolean, optional, default: true, deprecated) — **Deprecated read field.** Present during the migration window; reflects the legacy kill switch only.
  - `total` (double, optional) — Total number of agents

## Errors

### 400 Bad Request Error

Invalid input

- `status` (boolean, optional)
- `errors` (list of string, optional)

### 401 Unauthorized Error

Unauthorized access

- `status` (boolean, optional)
- `errors` (list of string, optional)

### 403 Forbidden Error

Forbidden access

- `status` (boolean, optional)
- `data` (object, optional)

### 500 Internal Server Error

Internal server error

- `status` (boolean, optional)
- `errors` (list of string, optional)

## Examples

**Response**

```json
{
  "status": true,
  "data": {
    "agents": [
      {
        "_id": "string",
        "name": "string",
        "description": "string",
        "backgroundSound": "",
        "organization": "string",
        "workflowId": "string",
        "workflowType": "workflow_graph",
        "createdBy": "string",
        "globalKnowledgeBaseId": "string",
        "language": {
          "default": "en",
          "switching": {
            "isEnabled": true,
            "minWordsForDetection": 1.1,
            "strongSignalThreshold": 1.1,
            "weakSignalThreshold": 1.1,
            "minConsecutiveForWeakThresholdSwitch": 1.1
          },
          "supported": [
            "string"
          ]
        },
        "synthesizer": {
          "voiceConfig": {
            "model": "waves_lightning_v3_1",
            "voiceId": "nyah",
            "gender": "female"
          },
          "speed": 1.2,
          "consistency": 0.5,
          "similarity": 0,
          "enhancement": 1,
          "sampleRate": 1.1
        },
        "slmModel": "electron",
        "defaultVariables": {},
        "preCallAPI": {
          "url": "string",
          "method": "GET",
          "isEnabled": false,
          "headers": {},
          "body": {},
          "timeout": 5,
          "queryParams": {},
          "responseVariables": [
            {
              "variableName": "string",
              "jsonPath": "string"
            }
          ]
        },
        "createdAt": "2024-01-15T09:30:00Z",
        "updatedAt": "2024-01-15T09:30:00Z",
        "avatarUrl": "string",
        "firstMessage": "string",
        "allowInterruptions": true,
        "waitForUserToSpeakFirst": true,
        "totalCalls": 1.1,
        "transcriberType": "string",
        "globalPrompt": "string",
        "archived": true,
        "archivedAt": "2024-01-15T09:30:00Z",
        "activeVersionId": "string",
        "versionId": "string",
        "phoneNumber": [
          "string"
        ],
        "visibleToEveryone": false,
        "speechFormatting": true,
        "muteUserUntilFirstBotResponse": false,
        "interruptionBackoffTimer": 1.1,
        "enableStyleGuide": true,
        "callDispositionConfig": "",
        "voiceMailDetectionConfig": {
          "enabled": false,
          "endText": "Terminating call, you can call us back anytime. Thank you for calling."
        },
        "smartTurnConfig": {
          "isEnabled": true,
          "waitTimeInSecs": 1.1
        },
        "voiceDetectionConfig": {
          "confidence": 0.5,
          "minVolume": 0.5,
          "triggerTimeInSecs": 1.1,
          "releaseTimeInSecs": 1.1
        },
        "denoisingConfig": {
          "isEnabled": true
        },
        "redactionConfig": {
          "isEnabled": true
        },
        "pronunciationDicts": [
          {
            "word": "string",
            "pronunciation": "string"
          }
        ],
        "llmIdleTimeoutConfig": {
          "chatTimeoutTimeInSecs": 1.1,
          "webcallTimeoutTimeInSecs": 1.1,
          "telephonyTimeoutTimeInSecs": 1.1,
          "maxRetries": 1.1
        },
        "sessionTimeoutConfig": {
          "timeoutTimeInSecs": 1.1
        },
        "timezone": {
          "label": "(GMT+0:00) UTC",
          "offset": 0
        },
        "postCallAnalyticsConfig": {
          "dispositionMetrics": [
            {
              "identifier": "call_resolved",
              "dispositionMetricPrompt": "Was the customer issue resolved by the end of the call?",
              "dispositionMetricType": "STRING",
              "choices": [
                "resolved",
                "escalated",
                "callback_scheduled",
                "no_action"
              ]
            }
          ],
          "useInternalAnalyticsModel": true,
          "useReasoningModel": false,
          "successMetrics": [
            {
              "identifier": "string",
              "successMetricPrompt": "string",
              "successMetricType": "NUMERIC_SCALE"
            }
          ],
          "summaryPrompt": ""
        },
        "widgetConfig": {
          "position": "bottom-right",
          "size": "full",
          "mode": "chat",
          "theme": "light",
          "baseColor": "#ffffff",
          "accentColor": "#2d9d9f",
          "agentBubbleColor": "#f3f4f6",
          "textOnAccentColor": "#FFFFFF",
          "secondaryTextColor": "#6b7280",
          "primaryTextColor": "#111827",
          "startButtonText": "Start",
          "endButtonText": "End",
          "ctaName": "Talk to Atoms",
          "widgetName": "Atoms",
          "avatarUrl": "string",
          "chatPlaceholder": "Type your message...",
          "consentRequired": false,
          "consentTitle": "Privacy Agreement",
          "consentContent": "string",
          "assistantId": "string",
          "allowlist": [
            "string"
          ]
        },
        "_resolvedConfig": {
          "prompt": "string",
          "tools": [
            {
              "type": "end_call",
              "name": "end_call",
              "description": "End the conversation when the user is satisfied",
              "enabled": true,
              "transferNumber": "+1234567890",
              "transferOption": {
                "type": "cold_transfer",
                "privateHandoffOption": {
                  "type": "prompt",
                  "prompt": "string"
                },
                "publicHandoffOption": {
                  "type": "prompt",
                  "prompt": "string"
                }
              },
              "onHoldMusic": "ringtone",
              "transferOnlyIfHuman": true,
              "detectionTimeout": 30,
              "url": "https://api.example.com/orders",
              "method": "GET",
              "timeout": 5000,
              "headers": {
                "Authorization": "Bearer TOKEN",
                "Content-Type": "application/json"
              },
              "headersArray": [
                {
                  "key": "Authorization",
                  "value": "Bearer TOKEN"
                }
              ],
              "queryParams": [
                {
                  "key": "id",
                  "value": "{{order_id}}"
                }
              ],
              "requestBody": "{\"customer_id\": \"{{customer_id}}\"}",
              "llmParameters": [
                {
                  "name": "string",
                  "description": "string",
                  "type": "text",
                  "values": [
                    "string"
                  ],
                  "required": false
                }
              ],
              "timeoutMs": 1000,
              "expectsResponse": true,
              "responseVariables": [
                {
                  "variableName": "orderStatus",
                  "jsonPath": "$.data.status"
                }
              ],
              "auth": {
                "type": "none",
                "token": "ORDER_API_TOKEN",
                "name": "X-API-Key",
                "location": "header",
                "value": "SEARCH_API_KEY",
                "username": "string",
                "password": "string"
              },
              "variablesExtractionSchema": [
                {
                  "name": "customer_name",
                  "description": "The customer's full name",
                  "type": "text",
                  "values": [
                    "satisfied",
                    "unsatisfied",
                    "neutral"
                  ]
                }
              ],
              "knowledgeBaseId": "60d0fe4f5311236168a109ca",
              "fillerPhrases": [
                "Let me check that for you",
                "One moment please"
              ]
            }
          ],
          "postCallAnalyticsConfig": {
            "dispositionMetrics": [
              {
                "identifier": "call_resolved",
                "dispositionMetricPrompt": "Was the customer issue resolved by the end of the call?",
                "dispositionMetricType": "STRING",
                "choices": [
                  "resolved",
                  "escalated",
                  "callback_scheduled",
                  "no_action"
                ]
              }
            ],
            "useInternalAnalyticsModel": true,
            "useReasoningModel": false,
            "successMetrics": [
              {
                "identifier": "string",
                "successMetricPrompt": "string",
                "successMetricType": "NUMERIC_SCALE"
              }
            ],
            "summaryPrompt": ""
          },
          "callDispositionConfig": "string",
          "modelName": "string",
          "transcriberType": "string",
          "defaultLanguage": "en",
          "supportedLanguages": [
            "string"
          ],
          "languageSwitching": {},
          "firstMessage": "string",
          "globalPrompt": "string",
          "preCallAPI": {},
          "workflowGraph": {},
          "muteUserUntilFirstBotResponse": true,
          "allowInterruptions": true,
          "voiceDetectionConfig": {},
          "smartTurnConfig": {},
          "backgroundSound": "string",
          "denoisingConfig": {},
          "redactionConfig": {},
          "llmIdleTimeoutConfig": {},
          "sessionTimeoutConfig": {}
        },
        "_configSource": "active",
        "_versionedWorkflow": {
          "prompt": "string",
          "tools": [
            {
              "type": "end_call",
              "name": "end_call",
              "description": "End the conversation when the user is satisfied",
              "enabled": true,
              "transferNumber": "+1234567890",
              "transferOption": {
                "type": "cold_transfer",
                "privateHandoffOption": {
                  "type": "prompt",
                  "prompt": "string"
                },
                "publicHandoffOption": {
                  "type": "prompt",
                  "prompt": "string"
                }
              },
              "onHoldMusic": "ringtone",
              "transferOnlyIfHuman": true,
              "detectionTimeout": 30,
              "url": "https://api.example.com/orders",
              "method": "GET",
              "timeout": 5000,
              "headers": {
                "Authorization": "Bearer TOKEN",
                "Content-Type": "application/json"
              },
              "headersArray": [
                {
                  "key": "Authorization",
                  "value": "Bearer TOKEN"
                }
              ],
              "queryParams": [
                {
                  "key": "id",
                  "value": "{{order_id}}"
                }
              ],
              "requestBody": "{\"customer_id\": \"{{customer_id}}\"}",
              "llmParameters": [
                {
                  "name": "string",
                  "description": "string",
                  "type": "text",
                  "values": [
                    "string"
                  ],
                  "required": false
                }
              ],
              "timeoutMs": 1000,
              "expectsResponse": true,
              "responseVariables": [
                {
                  "variableName": "orderStatus",
                  "jsonPath": "$.data.status"
                }
              ],
              "auth": {
                "type": "none",
                "token": "ORDER_API_TOKEN",
                "name": "X-API-Key",
                "location": "header",
                "value": "SEARCH_API_KEY",
                "username": "string",
                "password": "string"
              },
              "variablesExtractionSchema": [
                {
                  "name": "customer_name",
                  "description": "The customer's full name",
                  "type": "text",
                  "values": [
                    "satisfied",
                    "unsatisfied",
                    "neutral"
                  ]
                }
              ],
              "knowledgeBaseId": "60d0fe4f5311236168a109ca",
              "fillerPhrases": [
                "Let me check that for you",
                "One moment please"
              ]
            }
          ],
          "workflowGraph": {}
        },
        "allowInboundCall": true
      }
    ],
    "total": 1.1
  }
}
```

**SDK Code**

```typescript
import { SmallestAIClient } from "smallestai";

async function main() {
    const client = new SmallestAIClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.atoms.agents.getAllAgents({});
}
main();

```

```python
from smallestai import SmallestAI

client = SmallestAI(
    token="YOUR_TOKEN_HERE",
)

client.atoms.agents.get_all_agents()

```

```go
package main

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

func main() {

	url := "https://api.smallest.ai/atoms/v1/agent"

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

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

	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://api.smallest.ai/atoms/v1/agent")

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

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

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://api.smallest.ai/atoms/v1/agent")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.smallest.ai/atoms/v1/agent', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.smallest.ai/atoms/v1/agent");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.smallest.ai/atoms/v1/agent")! 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()
```