FruxonDocs
IntegrationsAssets

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.

POST
/v1/tenants/{tenant}/assets:import
AuthorizationBearer <token>

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

In: header

Path Parameters

tenant*string

The tenant identifier

The storage file id and ingestion options.

fileId*string

Storage file id returned by POST /storage.

Length1 <= length
description?string|null

Optional note describing what the asset contains and when an agent should use it. Injected into the step system prompt alongside the asset link.

vectorize?boolean

Whether to vectorize the file for semantic search. Defaults to true.

embeddingConfig?
embeddingLlmConfigId?string|null

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.

Formatuuid
[key: string]?never

Response 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
}
Empty
Empty