Content goes into an index. You can upload files, sync a folder or bucket, or push items from your own app. Use whichever fits, and mix them freely.
The quickest way. Datalumo reads PDF, Word, Markdown, HTML, and plain text:
dl upload docs handbook.pdf faq.md policies/*.pdf
In admin: open the index and click Upload files.
If your files are also hosted somewhere (a docs site, a bucket), pass the URL so answers can link back to them:
dl upload docs manual.pdf --url https://docs.example.com/manual.pdf
For PDFs, Datalumo tracks which page each passage came from, so a citation links to the exact page, like https://docs.example.com/manual.pdf#page=12. Your users land on the right page, not the top of the document.
To keep an index in step with an S3 bucket or a local folder, add a Source. Datalumo pulls new and changed files on a schedule and removes ones that are gone.
In admin: Sources → Add source. Or with the CLI:
dl sync add docs --type s3 --bucket my-bucket --prefix handbook/
Run a one-off pull any time with dl pull. See dl pull --help.
When your content lives in your own database or CMS, push it straight to the API. Each item needs a stable id and the searchable_text to embed:
curl -X POST https://your-domain/v1/indexes/docs/items \
-H "Authorization: Bearer $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [{
"id": "post:123",
"title": "Refund policy",
"searchable_text": "You can request a refund within 30 days.",
"metadata": { "url": "https://example.com/refunds" }
}]
}'
Use a stable id like post:123 so updates replace the right item. Send it again with unchanged text and it costs nothing, Datalumo skips it. Change the text and it re-embeds. Push on publish from your CMS and the index stays current with no sync to manage.
- Update: send the same
id with new text. It re-embeds in place.
- Hide: set an item's visibility to hidden in admin to drop it from results without deleting it.
- Delete: remove an item by
id, or delete the whole index to start over.
An index is tied to one embedding model, chosen when you create it. Keep related content together in one index. Use separate indexes when content should never mix in results, for example one per site or per customer.