openapi: 3.1.0 info: title: Anam AI Avatars LLMs API version: '1.0' servers: - url: https://api.anam.ai description: Anam API security: - BearerAuth: [] tags: - name: LLMs paths: /v1/llms: get: description: Returns a list of all LLMs available to the organization parameters: - in: query name: page schema: type: integer description: Page number for pagination - in: query name: perPage schema: type: integer description: Number of items per page - in: query name: search schema: type: string description: Search term to filter LLMs - in: query name: includeDefaults schema: type: boolean description: Include default LLMs in the response responses: '200': description: Successfully retrieved LLMs content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/LLM' meta: $ref: '#/components/schemas/Pagination' examples: default: $ref: '#/components/examples/LlmListResponse' '401': description: Unauthorized - Invalid or missing API key '403': description: Forbidden - API key lacks the required permission '500': description: Server error tags: - LLMs operationId: listLlms summary: list llms x-mint: metadata: title: list llms mcp: enabled: true name: list-llms description: Returns a list of all LLMs available to the organization post: description: Create a new LLM configuration requestBody: description: Endpoint URLs, model name, and credentials for the LLM. `secret` is encrypted at rest and is never returned in subsequent responses. Set `llmFormat` to match the upstream API's wire protocol. required: true content: application/json: examples: default: $ref: '#/components/examples/LlmCreate' schema: type: object required: - displayName - urls - llmFormat - modelName - secret properties: displayName: type: string description: type: string urls: type: array items: type: object properties: url: type: string format: uri llmFormat: type: string enum: - openai - azure_openai - groq_openai - gemini - advanced_voice - none modelName: type: string secret: type: string metadata: type: object reasoningEffort: type: string enum: - default - low - medium - high reasoningFormat: type: string enum: - parsed - raw - hidden responses: '201': description: Successfully created LLM content: application/json: schema: $ref: '#/components/schemas/LLM' examples: default: $ref: '#/components/examples/LlmResponse' '400': description: Bad request - Invalid LLM data '401': description: Unauthorized - Invalid or missing API key '403': description: Forbidden - API key lacks the required permission '500': description: Server error tags: - LLMs operationId: createLlm summary: create llm x-mint: metadata: title: create llm mcp: enabled: true name: create-llm description: Create a new LLM configuration /v1/llms/{id}: get: description: Get a specific LLM by ID parameters: - in: path name: id required: true schema: type: string description: The LLM ID responses: '200': description: Successfully retrieved LLM content: application/json: schema: $ref: '#/components/schemas/LLM' examples: default: $ref: '#/components/examples/LlmResponse' '401': description: Unauthorized - Invalid or missing API key '403': description: Forbidden - API key lacks the required permission '404': description: LLM not found '500': description: Server error tags: - LLMs operationId: getLlm summary: get llm x-mint: metadata: title: get llm mcp: enabled: true name: get-llm description: Get a specific LLM by ID put: description: Update an LLM configuration parameters: - in: path name: id required: true schema: type: string description: The LLM ID requestBody: description: Partial update of the LLM configuration. Only the fields you include are changed. Default LLMs (not owned by your organization) cannot be modified. Rotating `secret` replaces the stored credential. required: true content: application/json: examples: default: $ref: '#/components/examples/LlmUpdate' schema: type: object properties: displayName: type: string description: type: string url: type: string llmFormat: type: string enum: - openai - azure_openai - groq_openai - anthropic - custom modelName: type: string secret: type: string metadata: type: object reasoningEffort: type: string enum: - default - low - medium - high reasoningFormat: type: string enum: - parsed - raw - hidden responses: '200': description: Successfully updated LLM content: application/json: schema: $ref: '#/components/schemas/LLM' examples: default: $ref: '#/components/examples/LlmResponse' '400': description: Bad request - Invalid LLM data '401': description: Unauthorized - Invalid or missing API key '403': description: Forbidden - Cannot update default LLMs or API key lacks the required permission '404': description: LLM not found '500': description: Server error tags: - LLMs operationId: updateLlm summary: update llm x-mint: metadata: title: update llm mcp: enabled: true name: update-llm description: Update an LLM configuration delete: description: Delete an LLM configuration parameters: - in: path name: id required: true schema: type: string description: The LLM ID responses: '204': description: Successfully deleted LLM '401': description: Unauthorized - Invalid or missing API key '403': description: Forbidden - Cannot delete default LLMs or API key lacks the required permission '404': description: LLM not found '500': description: Server error tags: - LLMs operationId: deleteLlm summary: delete llm x-mint: metadata: title: delete llm mcp: enabled: true name: delete-llm description: Delete an LLM configuration. Use with caution as this action cannot be undone. components: examples: LlmResponse: summary: A single LLM configuration value: id: a7cf662c-2ace-4de1-a21e-ef0fbf144bb7 displayName: GPT-4o description: OpenAI GPT-4o default configuration. llmFormat: openai urls: - url: https://api.openai.com/v1/chat/completions modelName: gpt-4o temperature: 0.7 maxTokens: 1024 deploymentName: null apiVersion: null metadata: {} displayTags: - openai isDefault: true isGlobal: true isZdr: false createdByOrganizationId: null createdAt: '2026-04-20T10:00:00.000Z' updatedAt: null LlmUpdate: summary: Adjust the temperature on an existing LLM value: temperature: 0.5 LlmCreate: summary: Register an OpenAI-format LLM value: displayName: My GPT-4o urls: - url: https://api.openai.com/v1/chat/completions llmFormat: openai modelName: gpt-4o secret: sk-… temperature: 0.7 LlmListResponse: summary: A paginated list of LLMs value: data: - id: a7cf662c-2ace-4de1-a21e-ef0fbf144bb7 displayName: GPT-4o description: OpenAI GPT-4o default configuration. llmFormat: openai urls: - url: https://api.openai.com/v1/chat/completions modelName: gpt-4o temperature: 0.7 maxTokens: 1024 deploymentName: null apiVersion: null metadata: {} displayTags: - openai isDefault: true isGlobal: true isZdr: false createdByOrganizationId: null createdAt: '2026-04-20T10:00:00.000Z' updatedAt: null meta: total: 1 lastPage: 1 currentPage: 1 perPage: 10 prev: null next: null schemas: LLM: type: object description: An LLM configuration a persona can use. Secrets are never returned. properties: id: type: string format: uuid description: Unique identifier for the LLM configuration. displayName: type: string description: Human-readable name shown in the Lab. description: type: - string - 'null' description: Free-form description of the LLM configuration. llmFormat: type: string enum: - openai - azure_openai - groq_openai - gemini - advanced_voice - none description: Wire format used to call the upstream LLM. urls: type: array items: $ref: '#/components/schemas/LlmUrl' description: Endpoints configured for this LLM. modelName: type: - string - 'null' description: Upstream model identifier (e.g. `gpt-4o`). temperature: type: - number - 'null' description: Sampling temperature applied when calling the LLM. maxTokens: type: - integer - 'null' description: Maximum tokens generated per response. deploymentName: type: - string - 'null' description: Azure OpenAI deployment name. Only used when `llmFormat` is `azure_openai`. apiVersion: type: - string - 'null' description: Azure OpenAI API version. Only used when `llmFormat` is `azure_openai`. metadata: type: object description: Free-form provider-specific metadata. displayTags: type: array items: type: string description: Tags used to categorise the LLM in the Lab UI. isDefault: type: boolean description: Whether this LLM is a built-in default available to every organization. isGlobal: type: boolean description: Whether this LLM is visible to every organization. isZdr: type: boolean description: Whether this LLM meets the Zero Data Retention requirements. reasoningEffort: type: string enum: - default - low - medium - high description: Reasoning effort hint for models that accept it. reasoningFormat: type: string enum: - parsed - raw - hidden description: Reasoning format hint for models that accept it. createdByOrganizationId: type: - string - 'null' description: ID of the organization that created the LLM, or `null` for global defaults. IDs may be either UUIDs or nanoid-style strings depending on when the organization was created. createdAt: type: string format: date-time description: Timestamp when the LLM was created. updatedAt: type: - string - 'null' format: date-time description: Timestamp when the LLM was last updated. Pagination: type: object description: Pagination metadata returned alongside the `data` array of every list endpoint. properties: total: type: integer description: Total number of items across all pages. lastPage: type: integer description: Number of the last page. currentPage: type: integer description: Number of the current page. perPage: type: integer description: Number of items per page. prev: type: - integer - 'null' description: Number of the previous page, or null if on the first page. next: type: - integer - 'null' description: Number of the next page, or null if on the last page. LlmUrl: type: object description: One endpoint configured on an LLM. Multiple URLs can be specified to route different regions to different upstreams. properties: url: type: string format: uri description: Upstream URL for the LLM endpoint. region: type: string description: Region hint used to pick this URL when the persona is streamed from a specific region. securitySchemes: BearerAuth: type: http scheme: bearer x-mint: mcp: enabled: true