Bug Description
When fetching a navigation tree via the REST API in a multisite (language-configured) environment, requesting the origin_id field causes an exception if the navigation contains a "Nav Item" that does not link to an entry (e.g., a custom URL or label).
The API throws the error: Call to a member function origin() on null.
How to reproduce
- Configure a Statamic instance with Multisite enabled (configured for languages).
- Create a Navigation structure.
- Add a Nav Item that is not linked to an entry (e.g., a manual URL or a label).
- Perform a GET request to the REST API for the nav tree, including fields with origin_id.
- Example request: /api/navs/{nav_handle}/tree?fields=origin_id
- Observe the 500 Internal Server Error.
Logs
[2025-12-11 07:57:02] local.ERROR: Call to a member function origin() on null {"exception":"[object] (Error(code: 0): Call to a member function origin() on null at /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23)[stacktrace]#0 /var/www/html/statamic/vendor/statamic/cms/src/Structures/Page.php(486): Statamic\\Structures\\Page->forwardCallTo()#1 /var/www/html/statamic/vendor/statamic/cms/src/Entries/AugmentedEntry.php(104): Statamic\\Structures\\Page->__call()#2 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(131): Statamic\\Entries\\AugmentedEntry->originId()#3 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(58): Statamic\\Data\\AbstractAugmented->Statamic\\Data\\{closure}()#4 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(78): Statamic\\Fields\\Value->resolve()#5 /var/www/html/statamic/vendor/statamic/cms/src/Data/AbstractAugmented.php(52): Statamic\\Data\\AbstractAugmented->get()#6 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(58): Statamic\\Data\\AbstractAugmented->Statamic\\Data\\{closure}()#7 /var/www/html/statamic/vendor/statamic/cms/src/Fields/Value.php(223): Statamic\\Fields\\Value->resolve()#8 /var/www/html/statamic/vendor/statamic/cms/src/Data/AugmentedCollection.php(65): Statamic\\Fields\\Value->isRelationship()#9 [internal function]: Statamic\\Data\\AugmentedCollection->Statamic\\Data\\{closure}()#10 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(786): array_map()#11 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(814): Illuminate\\Support\\Arr::map()#12 /var/www/html/statamic/vendor/statamic/cms/src/Data/AugmentedCollection.php(64): Illuminate\\Support\\Collection->map()#13 /var/www/html/statamic/vendor/statamic/cms/src/Structures/Page.php(497): Statamic\\Data\\AugmentedCollection->toArray()#14 [internal function]: Statamic\\Structures\\Page->jsonSerialize()#15 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php(85): json_encode()#16 /var/www/html/statamic/vendor/symfony/http-foundation/JsonResponse.php(49): Illuminate\\Http\\JsonResponse->setData()#17 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php(31): Symfony\\Component\\HttpFoundation\\JsonResponse->__construct()#18 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php(105): Illuminate\\Http\\JsonResponse->__construct()#19 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php(36): Illuminate\\Routing\\ResponseFactory->json()#20 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php(264): Illuminate\\Http\\Resources\\Json\\ResourceResponse->toResponse()#21 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(921): Illuminate\\Http\\Resources\\Json\\JsonResource->toResponse()#22 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(906): Illuminate\\Routing\\Router::toResponse()#23 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Routing\\Router->prepareResponse()#24 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()#25 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/HandleToken.php(13): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#26 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\HandleToken->handle()#27 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#28 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()#29 /var/www/html/statamic/vendor/statamic/cms/src/API/Middleware/Cache.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#30 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\API\\Middleware\\Cache->handle()#31 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/RequireStatamicPro.php(17): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#32 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\RequireStatamicPro->handle()#33 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#34 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then()#35 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack()#36 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute()#37 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute()#38 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch()#39 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()#40 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/StopImpersonating.php(12): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#41 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\StopImpersonating->handle()#42 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/DisableFloc.php(17): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#43 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\DisableFloc->handle()#44 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/CheckMultisite.php(15): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#45 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\CheckMultisite->handle()#46 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/CheckComposerJsonScripts.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#47 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\CheckComposerJsonScripts->handle()#48 /var/www/html/statamic/vendor/statamic/cms/src/Http/Middleware/PoweredByHeader.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#49 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Statamic\\Http\\Middleware\\PoweredByHeader->handle()#50 /var/www/html/statamic/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#51 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle()#52 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#53 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()#54 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()#55 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#56 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()#57 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()#58 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#59 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()#60 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#61 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()#62 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(61): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#63 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle()#64 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#65 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle()#66 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#67 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle()#68 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#69 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle()#70 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()#71 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then()#72 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()#73 /var/www/html/statamic/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1220): Illuminate\\Foundation\\Http\\Kernel->handle()#74 /var/www/html/statamic/public/index.php(20): Illuminate\\Foundation\\Application->handleRequest()#75 {main}"} Environment
# EnvironmentApplication Name: StatamicLaravel Version: 12.40.2PHP Version: 8.3.27Composer Version: 2.9.1Environment: localDebug Mode: ENABLEDURL: localhost:8000Maintenance Mode: OFFTimezone: UTCLocale: en# CacheConfig: NOT CACHEDEvents: NOT CACHEDRoutes: NOT CACHEDViews: NOT CACHED# DriversBroadcasting: logCache: fileDatabase: mariadbLogs: stack / singleMail: smtpQueue: syncSession: file# Storagepublic/storage: NOT LINKED# StatamicAddons: 1Sites: 4 (Deutsch, Français, Italiano, English)Stache Watcher: Enabled (auto)Static Caching: DisabledVersion: 5.69.0 PRO# Statamic Addonsstatamic/eloquent-driver: 4.35.1# Statamic Eloquent DriverAsset Containers: eloquentAssets: eloquentBlueprints: fileCollection Trees: eloquentCollections: eloquentEntries: eloquentFieldsets: fileForm Submissions: eloquentForms: eloquentGlobal Sets: eloquentGlobal Variables: eloquentNavigation Trees: eloquentNavigations: eloquentRevisions: fileSites: fileTaxonomies: fileTerms: fileTokens: eloquent
Installation
Fresh statamic/statamic site via CLI
Additional details
No response
Bug Description
When fetching a navigation tree via the REST API in a multisite (language-configured) environment, requesting the origin_id field causes an exception if the navigation contains a "Nav Item" that does not link to an entry (e.g., a custom URL or label).
The API throws the error: Call to a member function origin() on null.
How to reproduce
Logs
Environment
Installation
Fresh statamic/statamic site via CLI
Additional details
No response