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

  1. Include at least one provider id in the Ids array of the bulk request body.
  2. 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

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


AI-assisted analysis of Radarr/Radarr@ca451608dc (2026-08-13). Data as JSON: /api/errors/ff4763349a9842bd. Report an issue: GitHub.