Да, 404 будет правильным кодом возврата для несуществующей компании, потому что если вы должны вернуть код успеха, разработчик, использующий ваш API, должен будет добавить дополнительные проверки для этого, или вам придется прийти с поддельными данными для выполнения запроса. Кроме того, в большинстве языков есть простые способы проверки и обработки кодов ошибок.
Что касается виджетов, поскольку это массив, это действительно ваше дело. Хотя коды 4xx указывают на ошибку. Именно поэтому я лично рекомендовал бы использовать 204 или 200, так как 2xx указывает на успех. 404 будет более уместным, если они попытаются получить список виджетов для несуществующей компании.
В действительности это сводится к последовательности и простоте. Большинство API всегда будут просто использовать код 200 и возвращать пустой массив в этом случае, потому что тогда разработчик, использующий API, может (обычно) использовать тот же или аналогичный код для обработки запросов, независимо от того, пуст массив или нет. Если вы возвращаете другой код состояния (204), а не просто пустой массив, разработчик, использующий ваш API, должен будет добавить дополнительную проверку для этого и, скорее всего, все равно создаст и вернет пустой массив. Кроме того, он избавляется от лишней пары строк в размещенном вами коде.