FruxonDocs
AgentsCore

Creates an Agent canonically owned by the Application in the route.

The Application in the route wins — any owner supplied in the body is overwritten before validation, so an Agent can never be created into a different Application than the one the caller was authorized against. Requires the Editor role. Responds 201 with a `Location` header pointing at the new Agent, or 400 with per-field validation errors.

POST
/v1/tenants/{tenant}/networks/{network}/agents
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

network*string

Id of the Application that will own the Agent.

Formatuuid
tenant*string

The tenant identifier

The Agent definition. Its owning-Application field is ignored and replaced by the route value.

id*string
Length1 <= length
displayName?string|null
description?string|null
avatarFileId?string|null
type?string

Enum 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.

Value in"UNSPECIFIED" | "SUMMARIZATION" | "RECOMMENDATION" | "ANALYZER" | "CHAT" | "OTHER"
tags?|null
networkId?string

The Application selected to own this Agent at creation.

Formatuuid
origin?string

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.

Value in"UNSPECIFIED" | "NATIVE" | "LANG_GRAPH" | "CREW_AI" | "OPEN_AI_ASSISTANTS" | "DIFY"
externalConfig?

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 URL
  • assistant_id: platform-side agent identifier (LangGraph assistant_id, OpenAI assistant id)
  • auth_header_name / auth_header_value: generic header-based auth
  • api_key: when the platform expects a fixed header
  • timeout_seconds: per-invocation timeout
[key: string]?never

Response Body

curl -X POST "https://api.fruxon.com/v1/tenants/string/networks/497f6eca-6276-4993-bfeb-53cbbbba6f08/agents" \  -H "Content-Type: application/json" \  -d '{    "id": "string"  }'
{
  "id": "string",
  "displayName": "string",
  "description": "string",
  "avatarFileId": "string",
  "type": "SUMMARIZATION",
  "tags": [
    "string"
  ],
  "enabled": false,
  "currentRevision": 0,
  "createdAt": 0,
  "modifiedAt": 0,
  "origin": "NATIVE",
  "networkId": "00000000-0000-0000-0000-000000000000"
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}