Uploads a file asset to an agent's knowledge base.
Streams the uploaded file to managed storage, creates an asset backed by that file, and kicks off ingestion. Returns the asset plus a `LongOperation` whose progress is observable via `GET /assets/{asset}/operations`. The `payload` form part is a JSON object: when `Vectorize` is true an `EmbeddingConfig` matching a model from `GET /assets:embeddingModels` is required. Accepted content types are listed by `GET /assets:supportedTypes`; uploads larger than 50 MB are rejected with 413.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
Request Body
multipart/form-data
The file to upload.
JSON string containing asset metadata.
Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/assets:file" \ -F File="document.pdf" \ -F Payload="{\n \"Vectorize\": true\n}"{
"asset": {
"id": "string",
"displayName": "string",
"type": "string",
"vectorized": false,
"config": {
"sourceType": "string",
"parameters": {}
},
"integrationId": "string",
"assetLink": "string",
"createdAt": 0,
"modifiedAt": 0,
"autoUpdate": false,
"autoUpdateConfig": {
"strategy": "WEBHOOK",
"provider": "string",
"externalContext": "string",
"filter": "string",
"pollFrequency": "DAILY",
"pollDay": "string",
"pollDayOfMonth": "_1",
"pollHour": "string",
"pollMinute": "string",
"timezone": "string"
},
"lastPolledAt": 0,
"embeddingLlmConfigId": "string",
"supportsAutoUpdate": false,
"supportsWebhookRegistration": false,
"supportsPollSchedule": false,
"embedding": {
"provider": "string",
"model": "string",
"chunkSize": 0,
"chunkOverlap": 0
},
"budget": {
"tokenBudget": 0,
"monthlyTokenBudget": 0,
"dailyTokenBudget": 0,
"totalTokenCount": 0,
"monthlyTokensUsed": 0,
"dailyTokensUsed": 0,
"costBudget": 0,
"monthlyCostBudget": 0,
"dailyCostBudget": 0,
"totalCost": 0,
"monthlyCostUsed": 0,
"dailyCostUsed": 0,
"pricePerMillionTokens": 0
},
"embeddingStatus": "PENDING",
"errorCategory": "CREDENTIALS"
},
"longOperation": {
"name": "string",
"status": "PENDING",
"resourceName": "string",
"resourceType": "string",
"startedAt": 0,
"completedAt": 0,
"error": "string",
"metadata": {}
},
"webhook": {
"id": "string",
"provider": "string",
"authMode": "API_KEY",
"status": "ACTIVE",
"expiresAt": 0,
"createdAt": 0,
"modifiedAt": 0,
"webhookUrl": "string",
"signingSecret": "string"
}
}{
"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
}Estimates token count for any supported source type.
The accepted config keys and their validation rules are described by the `source-types` endpoint.
Gets a single asset by its ID, including token budget from the RAG service.
Returns the asset together with RAG-side fields (token budget, embedding model, ingestion-derived usage) when the asset is vectorized. Safe to poll after `POST /assets` or `POST /assets/{asset}:refresh` to observe state changes, though ingestion progress is better tracked via `/operations`.