{"record":{"id":"b6dd9e42afe3a386","repo":"invoke-ai/InvokeAI","slug":"request-model-name-supports-at-most-capabilitie-b6dd9e","errorCode":null,"errorMessage":"{request.model.name} supports at most {capabilities.max_images_per_request} images per request","messagePattern":"(.+?) supports at most (.+?) images per request","errorType":"exception","errorClass":"ExternalProviderCapabilityError","httpStatus":null,"severity":"error","filePath":"invokeai/app/services/external_generation/external_generation_default.py","lineNumber":118,"sourceCode":"            request.model.provider_model_id,\n            request.mode,\n            capabilities.modes,\n        )\n\n        if request.mode not in capabilities.modes:\n            raise ExternalProviderCapabilityError(f\"Mode '{request.mode}' is not supported by {request.model.name}\")\n\n        if request.reference_images and not capabilities.supports_reference_images:\n            raise ExternalProviderCapabilityError(f\"Reference images are not supported by {request.model.name}\")\n\n        if capabilities.max_reference_images is not None:\n            if len(request.reference_images) > capabilities.max_reference_images:\n                raise ExternalProviderCapabilityError(\n                    f\"{request.model.name} supports at most {capabilities.max_reference_images} reference images\"\n                )\n\n        if capabilities.max_images_per_request is not None and request.num_images > capabilities.max_images_per_request:\n            raise ExternalProviderCapabilityError(\n                f\"{request.model.name} supports at most {capabilities.max_images_per_request} images per request\"\n            )\n\n        if capabilities.max_image_size is not None:\n            if request.width > capabilities.max_image_size.width or request.height > capabilities.max_image_size.height:\n                raise ExternalProviderCapabilityError(\n                    f\"{request.model.name} supports a maximum size of {capabilities.max_image_size.width}x{capabilities.max_image_size.height}\"\n                )\n\n        if capabilities.allowed_aspect_ratios:\n            aspect_ratio = _format_aspect_ratio(request.width, request.height)\n            if aspect_ratio not in capabilities.allowed_aspect_ratios:\n                size_ratio = None\n                if capabilities.aspect_ratio_sizes:\n                    size_ratio = _ratio_for_size(request.width, request.height, capabilities.aspect_ratio_sizes)\n                if size_ratio is None or size_ratio not in capabilities.allowed_aspect_ratios:\n                    ratio_label = size_ratio or aspect_ratio\n                    raise ExternalProviderCapabilityError(","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/services/external_generation/external_generation_default.py#L100-L136","documentation":"ExternalProviderCapabilityError raised by _validate_request when request.num_images exceeds capabilities.max_images_per_request. The provider caps how many images a single generation call may produce.","triggerScenarios":"generate() called with request.num_images > capabilities.max_images_per_request (when that cap is set).","commonSituations":"User sets 'number of images' higher than the model permits; saved UI settings carry a large num_images to a more restrictive model; batch scripts hardcoding a count.","solutions":["Lower request.num_images to capabilities.max_images_per_request","Issue multiple sequential requests to reach the desired total count","Clamp num_images in the UI from the model's capabilities before submitting"],"exampleFix":"// before\nrequest.num_images = 10  # model allows 4\n\n// after\nrequest.num_images = min(10, model.capabilities.max_images_per_request or 10)","handlingStrategy":"validation","validationCode":"mx = request.model.capabilities.max_images_per_request\nif mx is not None:\n    request.num_images = min(request.num_images, mx)","typeGuard":"def within_image_count_limit(model, num_images: int) -> bool:\n    mx = model.capabilities.max_images_per_request\n    return mx is None or num_images <= mx","tryCatchPattern":"try:\n    result = service.generate(request)\nexcept ExternalProviderCapabilityError as e:\n    if \"images per request\" in str(e):\n        request.num_images = request.model.capabilities.max_images_per_request\n        result = service.generate(request)\n    else:\n        raise","preventionTips":["Cap the num_images UI control at the selected model's maximum","Don't persist num_images across model switches without clamping","Fan out into multiple requests when a larger total is needed","Read the limit from capabilities rather than hardcoding"],"tags":["validation","capability-mismatch","limits","batch"],"backgroundTag":"unsupported-capability","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}