openapi: 3.0.1 info: title: Elementum Access Token Agents API description: Manage access tokens using OAuth 2.0 standards contact: email: apiteam@elementum.io version: 0.0.1 servers: - url: /v1 tags: - name: Agents description: Manage AI agents paths: /apps/{alias}/agents: get: tags: - Agents summary: List agents under an app operationId: listAgents parameters: - $ref: '#/components/parameters/alias' - $ref: '#/components/parameters/first' - $ref: '#/components/parameters/after' - $ref: '#/components/parameters/last' - $ref: '#/components/parameters/before' - $ref: '#/components/parameters/filter' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/AgentPagedList' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '422': $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - ClientCredentials: [] x-codegen-request-body-name: body post: tags: - Agents summary: Create an agent under an app operationId: createAgent parameters: - $ref: '#/components/parameters/alias' requestBody: description: Agent creation request content: application/json: schema: $ref: '#/components/schemas/AgentBundleCreateRequest' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PassthroughObject' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '422': $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - ClientCredentials: [] x-codegen-request-body-name: body /apps/{alias}/agents/{id}: put: tags: - Agents summary: Update an agent by ID operationId: updateAgent parameters: - $ref: '#/components/parameters/alias' - $ref: '#/components/parameters/passthroughId' requestBody: description: Agent update request content: application/json: schema: $ref: '#/components/schemas/AgentBundleUpdateRequest' required: true responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/PassthroughObject' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '422': $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - ClientCredentials: [] x-codegen-request-body-name: body components: parameters: last: name: last in: query description: The number of elements to retrieve before the 'before' cursor location required: false schema: maximum: 1000 minimum: 1 type: integer format: int32 first: name: first in: query description: The number of elements to retrieve after the 'after' cursor location required: false schema: maximum: 1000 minimum: 1 type: integer format: int32 default: 100 filter: name: filter in: query description: An RSQL filter string. required: false schema: type: string format: string examples: In: summary: In description: In the provided list value: Number=in=1:2:3:4:5 Between: summary: Between description: Between two values value: Number=bt=1:10 Equals: summary: Equals description: Equals value: Status==Open LikeIgnoreCase: summary: LikeIgnoreCase description: Contains value, case insensitive value: Title=lki=Incidents And: summary: And description: The and ';' operator value: Created At!=null;Created At=ge=2021-01-01T07:58:30.000Z NotLike: summary: NotLike description: Doesn't contains value value: Title!lk=Incidents -- select --: value: '' Or: summary: Or description: The or ',' operator value: Created At!=null,Created At=ge=2021-01-01T07:58:30.00Z NotLikeIgnoreCase: summary: NotLikeIgnoreCase description: Doesn't contains value, case insensitive value: Title!lki=Incidents GreaterOrEqualTo: summary: GreaterOrEqualTo description: Greater than inclusive value: Created At=ge=2021-01-01T07:58:30.000Z NotBetween: summary: NotBetween description: Not Between two values value: Number!bt=1:10 NotIn: summary: NotIn description: Not in the provided list value: Number!in=1:2:3:4:5 LessThan: summary: LessThan description: Less than exclusive value: Created At=lt=2022-03-15T07:58:30.000Z Like: summary: Like description: Contains value value: Title=lk=Incidents LessOrEqualTo: summary: LessOrEqualTo description: Less than inclusive value: Created At=le=2021-01-01T07:58:30.000Z NotEquals: summary: NotEquals description: Not Equals value: Created At!=null GreaterThan: summary: GreaterThan description: Greater than exclusive value: Created At=gt=2022-03-15T07:58:30.000Z passthroughId: name: id in: path description: The resource ID required: true schema: type: string format: string alias: name: alias in: path description: The app's namespace or its UUID required: true schema: type: string format: string after: name: after in: query description: The starting cursor to begin searching, defaults to the beginning of the list required: false schema: type: string before: name: before in: query description: The starting cursor to begin searching, defaults to the end of the list required: false schema: type: string schemas: PagingState: type: object properties: has_previous_page: type: boolean start_cursor: type: string end_cursor: type: string has_next_page: type: boolean PassthroughObject: type: object additionalProperties: true description: Free-form JSON object forwarded to/from the downstream service. AgentBundleCreateRequest: required: - agent type: object properties: tools: type: array description: Optional tools to attach to the new agent items: type: object additionalProperties: true a2aSkills: type: array description: Optional A2A skills to attach to the new agent items: type: object additionalProperties: true agent: $ref: '#/components/schemas/AgentCreateInput' description: Body for POST /v1/apps/{alias}/agents. AgentBundleUpdateRequest: required: - agent type: object properties: tools: type: array description: Optional tool list. If present, the agent's existing tools are replaced with this list. items: type: object additionalProperties: true a2aSkills: type: array description: Optional A2A skill list. If present, the agent's existing A2A skills are replaced with this list. items: type: object additionalProperties: true agent: $ref: '#/components/schemas/AgentUpdateInput' description: Body for PUT /v1/apps/{alias}/agents/{id}. AgentUpdateInput: type: object properties: elementum: $ref: '#/components/schemas/AgentSubtypeUpdateInput' description: Discriminator wrapper. Exactly one subtype field must be populated. AgentPagedList: type: object properties: paging: $ref: '#/components/schemas/PagingState' total: type: integer format: int32 items: type: array items: $ref: '#/components/schemas/Agent' AgentSubtypeCreateInput: type: object properties: avatarAttachmentId: type: string description: Attachment ID for the agent's avatar image format: uuid maxLength: type: integer description: Maximum tokens the model may return per turn format: int32 firstMessage: type: string description: Opening message the agent posts when a conversation starts reasoningEffort: type: string description: How much hidden reasoning the model is allowed before answering enum: - MINIMAL - LOW - MEDIUM - HIGH name: type: string description: The agent's display name description: type: string description: Short summary shown to users picking an agent aiProviderConnectorId: type: string description: ID of the AI provider connector the agent uses format: uuid temperature: type: number description: Model sampling temperature; typical range 0.0–2.0 instructions: type: string description: System prompt steering the agent's behavior additionalProperties: true description: Agent creation input. Less common fields (voiceConfig, agentAuthentication, runAs, startingActions, skillAccessConfig, systemToolsConfig, a2aStreaming, a2aRecordConfig, conversationIdleTimeout) are accepted and forwarded as-is. AgentCreateInput: type: object properties: elementum: $ref: '#/components/schemas/AgentSubtypeCreateInput' description: Discriminator wrapper. Exactly one subtype field must be populated. AgentSubtypeUpdateInput: type: object properties: avatarAttachmentId: type: string description: Attachment ID for the agent's avatar image format: uuid maxLength: type: integer description: Maximum tokens the model may return per turn format: int32 firstMessage: type: string description: Opening message the agent posts when a conversation starts reasoningEffort: type: string description: How much hidden reasoning the model is allowed before answering enum: - MINIMAL - LOW - MEDIUM - HIGH name: type: string description: The agent's display name description: type: string description: Short summary shown to users picking an agent aiProviderConnectorId: type: string description: ID of the AI provider connector the agent uses format: uuid temperature: type: number description: Model sampling temperature; typical range 0.0–2.0 instructions: type: string description: System prompt steering the agent's behavior additionalProperties: true description: Agent update input. Only fields you wish to change need to be included; omitted fields keep their current value. Less common fields (voiceConfig, agentAuthentication, runAs, startingActions, skillAccessConfig, systemToolsConfig, a2aStreaming, a2aRecordConfig, conversationIdleTimeout) are accepted and forwarded as-is. Agent: type: object properties: type: type: string description: The agent variant (AgentElementum, AgentSystem, AgentBrowserUse, AgentSnowflake, AgentBedrock, AgentExternal) id: type: string description: The agent ID format: uuid maxLength: type: integer description: Maximum tokens the model may return per turn format: int32 reasoningEffort: type: string description: How much hidden reasoning the model is allowed before answering enum: - MINIMAL - LOW - MEDIUM - HIGH description: type: string description: Short summary shown to users picking an agent name: type: string description: The agent's display name temperature: type: number description: Model sampling temperature; typical range 0.0–2.0 description: An agent returned by the agents list endpoint (summary projection). responses: '401': description: Unauthorized '422': description: Unprocessable Entity '429': description: Too Many Requests '403': description: Forbidden '500': description: Internal Server Error '404': description: Not Found '400': description: Bad Request securitySchemes: ClientCredentials: type: oauth2 flows: clientCredentials: tokenUrl: /oauth/token externalDocs: description: Find out more about Elementum url: https://www.elementum.com/