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
# Environment
Application Name: Statamic
Laravel Version: 12.40.2
PHP Version: 8.3.27
Composer Version: 2.9.1
Environment: local
Debug Mode: ENABLED
URL: localhost:8000
Maintenance Mode: OFF
Timezone: UTC
Locale: en
# Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: NOT CACHED
# Drivers
Broadcasting: log
Cache: file
Database: mariadb
Logs: stack / single
Mail: smtp
Queue: sync
Session: file
# Storage
public/storage: NOT LINKED
# Statamic
Addons: 1
Sites: 4 (Deutsch, Français, Italiano, English)
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 5.69.0 PRO
# Statamic Addons
statamic/eloquent-driver: 4.35.1
# Statamic Eloquent Driver
Asset Containers: eloquent
Assets: eloquent
Blueprints: file
Collection Trees: eloquent
Collections: eloquent
Entries: eloquent
Fieldsets: file
Form Submissions: eloquent
Forms: eloquent
Global Sets: eloquent
Global Variables: eloquent
Navigation Trees: eloquent
Navigations: eloquent
Revisions: file
Sites: file
Taxonomies: file
Terms: file
Tokens: 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