curl -X POST 'https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt' \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"receipt_ref": "<upload-id>"}'
const res = await fetch('https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt', {
method: 'POST',
headers: {
Authorization: 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"receipt_ref": "<upload-id>"
}),
});
const { success, data, message, code } = await res.json();
if (!success) throw new Error(`${code}: ${message}`);
Call Analysis
Confirm Upload
Tell 60db a file is uploaded so it can be checked
POST
/
deep-analytics
/
imports
/
batches
/
:batchId
/
items
/
:itemId
/
asset-receipt
curl -X POST 'https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt' \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"receipt_ref": "<upload-id>"}'
const res = await fetch('https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt', {
method: 'POST',
headers: {
Authorization: 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"receipt_ref": "<upload-id>"
}),
});
const { success, data, message, code } = await res.json();
if (!success) throw new Error(`${code}: ${message}`);
After the storage upload succeeds, send the
upload_id. 60db inspects the stored file itself. The row becomes ready for analysis once the file passes. Sending it again returns 200 and changes nothing.
Needs
manage on the analyzer.Request
Headers
Path
Batch row ID (UUID). Get it from List batch rows
Body
Response
201 Created (200 on repeat){
"success": true,
"data": {
"replayed": false,
"job_created": false,
"waiting_for": []
}
}
Errors
Errors use{ "success": false, "message": "...", "code": "..." }. See the overview for the codes every route can return.
This endpoint
| Status | Code | When |
|---|---|---|
| 400 | INVALID_RECEIPT | receipt_ref is malformed |
| 409 | ASSET_NOT_UPLOADED | No file in storage yet |
| 409 | UPLOAD_SUPERSEDED | A newer slot replaced this one |
| 409 | UPLOAD_REJECTED | This upload was rejected earlier |
| 422 | ASSET_TYPE_MISMATCH | The content is not the type you declared |
| 422 | ASSET_TOO_LARGE | The stored file is over 100 MiB |
| 422 | ASSET_EMPTY | The file is empty |
| 422 | ASSET_UNDECODABLE | Audio cannot be read |
| 422 | ASSET_CHANGED | The file changed while it was checked |
Example
curl -X POST 'https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt' \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"receipt_ref": "<upload-id>"}'
const res = await fetch('https://api.60db.ai/deep-analytics/imports/batches/9b7e6d5c-4b3a-4291-8f0e-1d2c3b4a5968/items/c1d2e3f4-a5b6-4c7d-9e8f-7a6b5c4d3e2f/asset-receipt', {
method: 'POST',
headers: {
Authorization: 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"receipt_ref": "<upload-id>"
}),
});
const { success, data, message, code } = await res.json();
if (!success) throw new Error(`${code}: ${message}`);