The download queue is the engine room of Crate. Every track that needs to be fetched passes through aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/TheOutdoorProgrammer/crate/llms.txt
Use this file to discover all available pages before exploring further.
DownloadQueueItem whose status progresses from pending → searching → downloading → organizing → complete (or failed). The endpoints below let you inspect the queue, control retries, and clear old entries. Related utility endpoints for the activity log and provider cache are also documented here.
GET /api/downloads/
Returns all download queue items, optionally filtered by status. Each item embeds the full nestedTrack object so you have everything needed to display queue state without additional requests.
Filter results to items with this status. Accepted values:
pending, searching, downloading, organizing, complete, failed. Omit to return all items.DownloadQueueItem
The queue entry’s internal ID.
ID of the track being downloaded.
The slskd search UUID, or a
"username|transferID" composite during an active transfer. May be null before a search starts.Current lifecycle status:
pending, searching, downloading, organizing, complete, or failed.How many download attempts have been made for this queue entry.
RFC 3339 timestamp of the most recent attempt, or
null if no attempt has been made yet.Error message from the last failed attempt, or
null.RFC 3339 timestamp when the next automatic retry is scheduled.
null if not waiting to retry.How the queue entry was created:
"user" for entries added via the API or UI, "scheduler" for entries re-queued by the automatic download scheduler.Bytes transferred as of the last progress update. Used to detect stalled transfers.
RFC 3339 timestamp when the entry was created.
Nested
Track object. Contains id, title, track_number, disc_number, status, file_path, download_format, download_bitrate, artist_name, album_title, and other fields from the track model.GET /api/downloads/progress
Returns the bytes-transferred progress for all currently active (downloading-state) transfers, queried live from slskd. Use this to drive a progress bar without polling the full queue list.POST /api/downloads/queue
Bulk-queues all currentlywanted tracks across the entire library. This is the same action as “Queue all wanted” in the UI. Already-queued tracks are skipped by the unique partial index on download_queue(track_id) where status is active, so it is safe to call repeatedly.
Response
Number of new queue entries that were created.
POST /api/downloads/{id}/retry
Immediately retries a failed download by resetting its status topending and clearing any scheduled next_retry_at value. The downloader loop will pick it up on its next tick.
The download queue entry ID (not the track ID).
Always
"pending" on success.DELETE /api/downloads/{id}
Removes a single download queue entry. If the entry is in an active state (pending, searching, or downloading), Crate also cancels the corresponding slskd transfer and resets the track’s status back to wanted.
The download queue entry ID.
204 No Content on success.
DELETE /api/downloads/clear
Bulk-removes all download queue entries that match a given status. For active statuses (pending, searching, downloading), the corresponding tracks are reset to wanted before deletion so they are not lost.
The status bucket to clear. Must be one of:
failed, complete, pending, downloading, searching.Number of queue entries that were removed.
GET /api/activity
Returns recent entries from the activity log, which records every significant download event (search started, download completed, file organized, error, etc.). Results are returned newest-first, paginated vialimit and offset.
Maximum number of entries to return. Defaults to
50.Number of entries to skip for pagination. Defaults to
0.Array of
ActivityLog entries.Total number of activity log entries (before pagination), useful for building paginated UIs.
DELETE /api/cache
Clears the provider response cache stored incache.db. Useful if you suspect stale data from a provider or if you have changed providers and want fresh results on the next search. The cache repopulates automatically on the next provider request.
Response
Always
"cleared" on success.