Radarr/Radarr · error · BadRequestException
ids must be provided
Error message
ids must be provided
What it means
Thrown by the generic PUT .../bulk endpoint on ProviderControllerBase (the base for indexers, download clients, notifications, etc.) when the bulk provider resource's Ids collection is empty. A bulk update needs target provider ids to apply changes to, so an empty set is a bad request.
Source
Thrown at src/Radarr.Api.V3/ProviderControllerBase.cs:134
Test(providerDefinition, true);
}
if (hasDefinitionChanged)
{
_providerFactory.Update(providerDefinition);
}
return Accepted(existingDefinition.Id);
}
[HttpPut("bulk")]
[Consumes("application/json")]
[Produces("application/json")]
public virtual ActionResult<TProviderResource> UpdateProvider([FromBody] TBulkProviderResource providerResource)
{
if (!providerResource.Ids.Any())
{
throw new BadRequestException("ids must be provided");
}
var definitionsToUpdate = _providerFactory.Get(providerResource.Ids).ToList();
foreach (var definition in definitionsToUpdate)
{
_providerFactory.SetProviderCharacteristics(definition);
if (providerResource.Tags != null)
{
var newTags = providerResource.Tags;
var applyTags = providerResource.ApplyTags;
switch (applyTags)
{
case ApplyTags.Add:
newTags.ForEach(t => definition.Tags.Add(t));
break;View on GitHub (pinned to ca451608dc)
Solutions
- Include at least one provider id in the Ids array of the bulk request body.
- Disable bulk-edit controls in the UI until at least one provider row is selected.
Example fix
// before
PUT /api/v3/indexer/bulk
{ "ids": [], "tags": [2], "applyTags": "add" }
// after
PUT /api/v3/indexer/bulk
{ "ids": [1, 4], "tags": [2], "applyTags": "add" } Defensive patterns
Strategy: validation
Validate before calling
if (providerResource.Ids is null || !providerResource.Ids.Any()) {
return BadRequest("Select at least one provider id for the bulk update.");
} Type guard
static bool HasIds<T>(T bulk) where T : IBulkProviderResource
=> bulk?.Ids?.Any() == true; Prevention
- Require at least one provider selected before enabling bulk edit.
- Short-circuit empty bulk payloads in API clients before sending.
When it happens
Trigger: A PUT to /api/v3/{provider}/bulk (e.g. indexer, downloadClient, notification) with a body whose Ids list is empty.
Common situations: A bulk tag-edit action in the UI invoked with no providers selected; a script applying tag changes to an empty filtered list; a client sending an empty ids array.
Related errors
- ids must be provided
- movieFileIds must be provided
- items must be provided
- movieId or movieFileIds must be provided
- movieId must be provided
AI-assisted analysis of Radarr/Radarr@ca451608dc (2026-08-13).
Data as JSON: /api/errors/ff4763349a9842bd.
Report an issue: GitHub.