Creates a file asset from a file already uploaded to storage.
Promotes the referenced storage file to retained — so the temporary-upload sweep no longer removes it — then creates a file-backed asset using the file's stored display name and content type and kicks off ingestion. Use this after uploading via `POST /storage?temporary=true` to avoid sending the same bytes twice; the direct-upload path (`POST /assets:file`) stays available for one-shot uploads. When `vectorize` is true an `embeddingConfig` matching a model from `GET /assets/embeddingModels` is required.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
The storage file id and ingestion options.
Storage file id returned by POST /storage.
1 <= lengthOptional note describing what the asset contains and when an agent should use it. Injected into the step system prompt alongside the asset link.
Whether to vectorize the file for semantic search. Defaults to true.
Optional reference to a tenant-level LLM config for embedding credentials. When set, the published revision's API key is used instead of Fruxon.Server.Controllers.Assets.CreateAssetFromFileRequest.EmbeddingConfig ApiKey.
uuidResponse Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/assets:import" \ -H "Content-Type: application/json" \ -d '{ "fileId": "string" }'{
"asset": {
"id": "string",
"displayName": "string",
"description": "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": 0,
"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
}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`.
Retrieves OAuth credentials obtained from a completed asset OAuth flow
Exchanges the short-lived credential key produced by the OAuth callback for the access/refresh token pair, then invalidates the key. Allowed anonymously because the OAuth success page runs before the user is reattached to a session; the key itself binds the response to the originating flow. Pass the returned tokens as the `auth` block when creating the asset via `POST /assets`. Calling this endpoint a second time with the same key returns 400.