Creates a new agent.
Provisions a new agent shell with an empty draft revision and grants the calling user the Admin role on it. No flow is deployed yet — the agent is not executable until you build a revision via the agent-revisions endpoints and deploy it with `POST /v1/tenants/{tenant}/agents/{agent}/revisions/{revision}:deploy`. Returns 201 with the new agent's ID, which is used in the path of all subsequent agent-scoped calls.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
The agent creation request.
1 <= lengthEnum representing the different types of AI agents supported by Fruxon.
Wire form is UPPER_SNAKE; Unspecified = 0 is the AIP-126
zero-sentinel.
This enum is mandatory, meaning every agent must have a specific type.
"UNSPECIFIED" | "SUMMARIZATION" | "RECOMMENDATION" | "ANALYZER" | "CHAT" | "OTHER"Where an agent's reasoning loop runs. Stored on Agent.Origin
and used by the agent gateway to resolve the right
IAgentExecutor implementation. Defaults to
Fruxon.Model.Agents.External.AgentOrigin.Native for backwards compatibility — every existing
agent is native. Wire form is UPPER_SNAKE per project convention.
"UNSPECIFIED" | "NATIVE" | "LANG_GRAPH" | "CREW_AI" | "OPEN_AI_ASSISTANTS" | "DIFY"Configuration for an externally-hosted agent. Persisted as JSONB on Fruxon.Model.Agents.Agent.ExternalConfig; null when Fruxon.Model.Agents.Agent.Origin is Fruxon.Model.Agents.External.AgentOrigin.Native.
Connection details are a free-form
System.Collections.Generic.Dictionary2 whose schema is declared per-platform by the matching IAgentPlatformDescriptor.ConnectionParameters. This mirrors how connectors and integrations work: persistent state is a flat dict, descriptors carry the schema, secrets are auto-encrypted by walking the metadata. Adding a new platform with novel auth (OAuth, signed JWT, mTLS) needs no shared-code changes — just new ParameterMetadata` entries on the descriptor.
Conventional keys (most platforms use most of these):
endpoint: the HTTP base URLassistant_id: platform-side agent identifier (LangGraph assistant_id, OpenAI assistant id)auth_header_name/auth_header_value: generic header-based authapi_key: when the platform expects a fixed headertimeout_seconds: per-invocation timeout
Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/agents" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"id": "string",
"displayName": "string",
"description": "string",
"avatarFileId": "string",
"tags": [
"string"
],
"type": "SUMMARIZATION",
"enabled": false,
"currentRevision": 0,
"createdAt": 0,
"modifiedAt": 0,
"tenantId": "00000000-0000-0000-0000-000000000000",
"solutionId": "string",
"deletedAt": 0,
"evaluationMetrics": [
{
"metricId": "00000000-0000-0000-0000-000000000000",
"weight": 0
}
],
"origin": "NATIVE",
"externalConfig": {
"parameters": {}
},
"redactLlmMessages": false
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Cancels a pending agent deletion within the grace period
Restores an agent that was soft-deleted via `DELETE /v1/tenants/{tenant}/agents/{agent}` but has not yet been purged. The agent reappears in list/get responses with its previous configuration and collaborators intact. Returns 400 if the agent is not currently in a pending-delete state, and 404 if the grace period has already expired and the agent was purged.
Deactivates an agent
Flips the agent's `Enabled` flag to false. New invocations through connectors, schedules, or the gateway are rejected, but already-running executions continue to completion and historical data (executions, traces, evaluations) remains queryable. Configuration and revisions are preserved; re-enable with `POST /v1/tenants/{tenant}/agents/{agent}:activate`. Idempotent.