FruxonDocs
AgentsExecution

Executes an agent using its currently deployed revision.

Runs the agent synchronously and returns the complete result.

API-Only Endpoint

This endpoint is available via API only and requires a Fruxon bearer token: Authorization: Bearer YOUR_TOKEN. Fill in your parameters below and the code samples will update automatically. To generate a token, see the Settings guide.

Python SDK Available

You can also call this endpoint using the Fruxon Python SDK. Install with pip install fruxonFruxonClient.execute(), .execute_revision(), and .stream() cover this surface, and the fruxon run CLI wraps them with --stream / --no-stream / --revision.

POST
/v1/tenants/{tenant}/agents/{agent}:execute
AuthorizationBearer <token>

Fruxon token presented as a Bearer token: Authorization: Bearer fx_pat_… (personal) or fx_sat_… (service account). Generate one from Settings → API Access.

In: header

Path Parameters

agent*string

The unique identifier of the agent.

tenant*string

The tenant identifier

The execution parameters and inputs.

parameters?|null

A dictionary of input parameters for the agent execution. Keys correspond to parameter names defined in the agent's entry point flow step.

attachments?|null

A list of file attachments included with the execution request. These are files sent by the user (e.g., via a connector) that the agent can access during execution.

deferredAttachments?|null

P0-3 — inbound media references stamped at the webhook without downloading the bytes there. The worker resolves these into Fruxon.Model.Agents.AgentExecutionRequest.Attachments (and weaves their prompt-links into the Fruxon.Model.Agents.AgentExecutionRequest.UserQueryParameter) just before execution, off the inbound hot path. Empty for the eager path and for non-chat runs. See Fruxon.Model.Storage.DeferredAttachment and the worker's DeferredMediaResolver.

deferredAttachmentBaseText?string|null

P0-3 — the raw message text the rendered Fruxon.Model.Agents.AgentExecutionRequest.UserQueryParameter ends with when this request carries Fruxon.Model.Agents.AgentExecutionRequest.DeferredAttachments (links not yet appended). The worker uses it to splice resolved attachment prompt-links into the query exactly where the eager path would have. Null unless attachments were deferred. See InboundAttachmentPrompt.AppendResolvedLinks.

chatUser?
sessionId?string|null

An optional session ID for maintaining execution context across requests. When provided, the agent can resume a previous conversation session.

participantId?string|null

The resolved participant id for this run's inbound venue, lifted from the task's ParticipantContext metadata by Fruxon.Model.Agents.AgentExecutionService.ExecuteFromQueueAsync and threaded onto Fruxon.Model.Agents.AgentContext.ParticipantId. The venue-precedence winner (the group in a group, the person in a DM). Null on non-queue paths (sync API / test, scheduler) and inbound from senders that matched no participant. See docs/design/identity-profile-normalization.md §6.4.

Formatuuid
senderParticipantId?string|null

§15.3 — the individual sender's participant id (distinct from Fruxon.Model.Agents.AgentExecutionRequest.ParticipantId, the venue, in a group), threaded onto Fruxon.Model.Agents.AgentContext.SenderParticipantId. Null when the sender isn't a known participant. Drives "who am I talking to" / memory subject, never routing.

Formatuuid
networkId?string|null

Network operating boundary selected for this run. I1 resolves the tenant's Default Network at the execution choke point and carries it through queued/resumed requests; later routing may supply a non-default network. Nullable for legacy queue payloads during the dual-read window.

Formatuuid
agentMembershipId?string|null

Stable conversational deployment principal selected for this run. When present it must identify a membership of the requested Agent in Fruxon.Model.Agents.AgentExecutionRequest.NetworkId; the execution choke point validates that tuple before building or retrieving an Application-dependent plan.

Formatuuid
runnableBindingId?string|null

The runnable binding that scheduled this execution — for a collection pipeline it is the pipeline id (the pipeline is the shipped runnable binding, build-plan artifact B). Part of the §10 RunnableExecutionContext; null for conversational/ad-hoc runs, which resolve via an Agent membership instead.

Formatuuid
environmentSlug?string|null

Identifies the environment this execution targets. Enables per-environment cost tracking, quota enforcement, and analytics. For system agents, this is automatically set to the calling tenant's slug.

Lengthlength <= 64
mode?string

Selects which integration-config variant an execution uses. Sandbox falls back to production per-config when no sandbox variant is configured. Callers normally send PRODUCTION or SANDBOX; UNSPECIFIED is the zero value and exists only so the field can be omitted on the wire without misrepresenting the user's intent — the host DTO supplies the real default (typically PRODUCTION).

Value in"UNSPECIFIED" | "PRODUCTION" | "SANDBOX"
occurredAt?integer|null

Provider-reported receipt time of the inbound message (Unix ms), the customer's actual send time — set by M:Fruxon.Model.Agents.AgentExecutionRequest.CreateForInboundMessage(Fruxon.Model.Messaging.Dispatch.InboundMessage,System.String) from InboundMessage.Date and threaded onto Fruxon.Model.Agents.AgentContext.OccurredAt so the persisted inbound userFruxon.Model.AgentSessions.AgentMessage.OccurredAt carries the real event time rather than the batch persist time. Null for non-chat runs (API, subtask, scheduler) and when the provider reported no timestamp. Survives the queued-payload round-trip.

Formatint64
channelHandle?string|null

How the agent appears on the channel this run originated from — the provider bot handle (e.g. "@daria_bot"). Set by the inbound receivers from the integration config's Fruxon.Model.Integrations.Configs.BotIdentity; surfaced to the model via Fruxon.Model.Agents.AgentContext.ChannelHandle in the identity preamble. Null for non-channel runs (API, test chat, triggers).

parentExecutionRecordId?string|null

When this run was spawned as a sub-task (e.g. spawn_subtask), the spawning run's execution-record id. Carried on the queued request so the child's execution record can be stamped with it when the worker eventually runs it, connecting the two traces. Null for top-level runs. See Fruxon.Model.ExecutionTraces.AgentExecutionRecord.ParentExecutionRecordId.

Formatuuid
parentAsyncOperationId?string|null

The parent run's async-operation id this sub-task satisfies (pins the exact spawning call). Null for top-level runs.

Formatuuid
rootExecutionId?string|null

Top-level ancestor of this run's spawn tree (the parent's root, or the parent's own id for a first-level child). Null for top-level runs (the record then roots itself).

Formatuuid
actionTypeCeiling?string

Reversibility classification of a tool's side effects. Wire form is UPPER_SNAKE per project convention; Unspecified = 0 is the AIP-126 zero-sentinel.

Value in"UNSPECIFIED" | "READ_ONLY" | "REVERSIBLE" | "IRREVERSIBLE"
agentRevision?integer|null

Optional pinned agent revision to run (the IRunnable binding's (AgentId, Revision)): when set, the queue execution runs this exact revision instead of resolving the agent's current one. Set by collection-pipeline fan-out so every item in a run executes the same revision — pinned at run start (design §10.8, "a pipeline pins the whole batch run to one release"); null for ordinary runs, which keep resolving the current revision. Survives the queue payload round-trip so a suspended item resumes on the same revision.

Formatint64
[key: string]?never

Response Body

curl -X POST "https://api.fruxon.com/v1/tenants/string/agents/string:execute" \  -H "Content-Type: application/json" \  -d '{}'
{
  "response": "string",
  "trace": {
    "agentId": "string",
    "agentRevision": 0,
    "createdAt": 0,
    "parameters": {},
    "startTime": 0,
    "endTime": 0,
    "duration": 0,
    "traces": [
      {
        "id": "string",
        "displayName": "string",
        "type": "UNSPECIFIED",
        "llmStepTrace": null,
        "toolTrace": null,
        "hitlTrace": null,
        "steps": [],
        "result": null,
        "status": "UNSPECIFIED",
        "error": "string",
        "startTime": 0,
        "endTime": 0,
        "duration": 0
      }
    ],
    "result": {
      "strValue": "string",
      "jsonValue": null,
      "fileLink": "string",
      "flowControl": null
    },
    "inputCost": 0,
    "outputCost": 0,
    "totalCost": 0
  },
  "sessionId": "string",
  "links": [
    {
      "fileId": "string",
      "fileType": "string",
      "displayName": "string",
      "promptLink": "<string:string/>"
    }
  ],
  "executionRecordId": "00000000-0000-0000-0000-000000000000",
  "status": "COMPLETED",
  "humanApprovalRequestId": "00000000-0000-0000-0000-000000000000",
  "suppressOutbound": false,
  "messageBlocks": []
}
{
  "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
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}