Looks up an asset, and optionally one of its documents, by the ids the search index reports.
A search hit — from `POST /assets/{asset}:search`, or a `search_assets` result in a run's trace — names its asset and document by the search index's own ids, not the ones the other asset endpoints take. This translates them: it returns the asset's id and name, and the knowledge base the asset backs, if any. With `documentId` it also says where that document stands now. The index deletes a document and creates a new one whenever its source changes, so an id recorded earlier may be gone even though its source is still indexed. `CURRENT` means the id is still indexed and its text is unchanged. `REINDEXED` means one document from the same source replaced it; `current` is the replacement and its text may differ. `MISSING` means nothing in the asset can be told apart as its replacement. Pass whatever else the hit carries (`knowledgeDocumentId`, `sourceUrl`, `fileName`) so a replacement can be recognised. Read the document's text with `GET /assets/{asset}/documents/{document}/chunks`, using `assetId` and `document.current.id` from this response.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
Query Parameters
The asset's id in the search index: a search hit's assetId (asset_id in a tool result).
uuidThe indexed document's id: a search hit's documentId (document_id in a tool result).
uuidThe hit's knowledge_document_id, when it came from a knowledge base.
uuidThe hit's source URL, when it has one.
The hit's file name (source in a tool result).
Response Body
curl -X GET "https://api.fruxon.com/v1/tenants/string/assets:lookup"{
"assetId": "00000000-0000-0000-0000-000000000000",
"assetName": "string",
"knowledgeBaseId": "00000000-0000-0000-0000-000000000000",
"knowledgeBaseName": "string",
"document": {
"requestedDocumentId": "00000000-0000-0000-0000-000000000000",
"state": "CURRENT",
"current": {
"id": "00000000-0000-0000-0000-000000000000",
"assetId": "00000000-0000-0000-0000-000000000000",
"fileName": "string",
"fileId": "string",
"contentType": "string",
"sourceUrl": "string",
"fileSize": 0,
"chunkCount": 0,
"status": "PENDING",
"errorMessage": "string",
"createdAt": 0,
"modifiedAt": 0,
"processedAt": 0,
"metadata": {}
},
"knowledgeDocumentId": "00000000-0000-0000-0000-000000000000"
}
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}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.
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.