Bulk-load the catalogue
Typing films in one at a time was fine for learning, but the finished example searches thousands. Let's load a whole list at once from a file — and use it to add the second list that example searches: actors.
The file format
Your data is a JSON array: one object per record, each object a set of "field": value pairs. Values can be text, numbers, true/false, or a list.
Here's a couple of actors:
[
{
"name": "Jennifer Lawrence",
"image_url": "https://.../jennifer-lawrence.jpg",
"movies": ["The Hunger Games: Catching Fire", "X-Men: Days of Future Past"]
},
{
"name": "Hugh Jackman",
"image_url": "https://.../hugh-jackman.jpg",
"movies": ["Prisoners", "X-Men: Days of Future Past"]
}
]
Import the file
Create a new list called actors, open it, and click the Import button (the upload icon). Choose your file, and set two things:
- Name Field: which field is the result's name. Here it's
name. (Leave it blank and Search Stack picks a sensible one for you.) - Create Fields: leave this on and Search Stack reads your file and sets up the fields automatically, so you don't have to add each one by hand first.
Click Upload. In seconds the whole list is in, with every field created and typed for you. image_url came in as a resource (see the little image previews), movies as searchable text:
Or from code
The same import over the API is a single call. Post your JSON array to the with-fields endpoint and any new fields are created from the data:
POST https://api.searchstack.dev/search-result/Demo/actors/with-fields
X-API-Key: {your key}
Content-Type: application/json
[ { "name": "Jennifer Lawrence", "image_url": "https://…", "movies": ["…"] }, … ]
Big files (over 1 MB) are imported in the background. You can carry on, and the records appear when it finishes. You can also keep an imported file in a media store and have Search Stack re-import it automatically whenever the file changes, so your search data stays in step with a file you export from elsewhere.
Moving records
Getting records in is half the job; sometimes you need to take some out, or move them from one list to another. Say a few films graduate from your movies list into a new classics list. The safe way is a move: insert the records into the target, then delete exactly those from the source.
The delete step is a single call. Post the ids you just moved to the delete-by-ids endpoint and they are removed straight away — no background job, and the response tells you exactly what happened:
POST https://api.searchstack.dev/search-result/Demo/movies/delete-by-ids
X-API-Key: {your key}
Content-Type: application/json
{ "ids": ["b71b7c9c4f2e4c98", "e2a1…", "9f04…"] }
{ "deleted": 3, "not_found": [] }
It deletes the exact set you name, so a move never removes a film that only happens to match a filter. Any id already gone comes back under not_found rather than as an error, so the call is safe to retry. Keep each batch to 100 ids or fewer; for open-ended clear-outs (“delete everything before 1970”) use delete-by-filter instead. The full delete family is on the Lists reference.
Ask Claude to “move these films into a classics list” and it runs exactly this — search, insert, then delete the moved ids — over the MCP tools, no code from you.
movies and actors, both
full. But they're still two separate searches — and the finished example has one box.
That's next.
Go deeper: Auto-reimport, media stores and the in-console file editor in the reference.