Author API Methods
navigate()
Navigates the Author API to the specified location. The navigation is immediate and any unsaved changes in the current view will be lost.
You would want to use this method so that you can advance to a new view in your application, for example.
From August 2026 in the developer version, advanced tag filtering with boolean logic is available when navigating to the Item list view (items/search/) or Activity list view (activities/search/).
Note Navigating to the same location (including search parameters) does not refresh the data. To refresh the content, use the refreshSearch method instead.
Examples
Basic Item navigation: Navigating to an Item, the Item list, or a specific Item view.
// Navigate to an existing Item (or a new one with the provided reference, if it doesn't exist)
var canNavigate = authorApp.navigate('items/' + myItemReference);
console.log(canNavigate);
// Navigate to the Item list
var canNavigate = authorApp.navigate('items');
console.log(canNavigate);
// Navigate to show unpublished Items
var canNavigate = authorApp.navigate('items/search/' + encodeURIComponent('{ "status": "unpublished" }'));
console.log(canNavigate);
// Navigate to the Questions tile view
var canNavigate = authorApp.navigate('items/' + myItemReference + '/widgets/new');
console.log(canNavigate);
// Navigate to the Features tile view
var canNavigate = authorApp.navigate('items/' + myItemReference + '/widgets/new/' + encodeURIComponent('{ "widgetType": "features" }'));
console.log(canNavigate);
Browse-based tag hierarchy filtering: Navigate to the Item list and filter Items by tag hierarchies.
var canNavigate = authorApp.navigate('items/search/' + encodeURIComponent(
JSON.stringify({
"browse": {
"hierarchy": {
"reference": "CCSS",
"tags": [
{
"type": "Common Core Topic",
"name": "The Number System",
"label": "The Number System"
},
{
"type": "Common Core State Standard",
"name": "Geometry",
"label": "Geometry"
}
]
},
"tags": [
{
"type": "course",
"name": "Introduction to algebra"
}
]
}
})
));
console.log(canNavigate);
Navigate directly to a Widget template: Open the Widget editor with a particular template, such as when creating a new multiple choice Question.
var canNavigate = authorApp.navigate('items/' + myItemReference + '/widgets/new/' + encodeURIComponent(
JSON.stringify({
widgetTemplate: {
template_reference: '9e8149bd-e4d8-4dd6-a751-1a113a4b9163'
}
})
));
console.log(canNavigate);
Activity navigation: Navigate to a new or existing activity.
// Navigate to a new Activity
var canNavigate = authorApp.navigate('activities/new');
console.log(canNavigate);
// Navigate to an existing Activity (or a new one with the provided reference, if it doesn't exist)
// Note this can be used to navigate to any type of Activity (Standard, Adaptive, or Random)
var canNavigate = authorApp.navigate('activities/' + myActivityReference);
console.log(canNavigate);
// Navigate to a new Random Activity
var canNavigate = authorApp.navigate('activities/new/random');
console.log(canNavigate);
// Navigate to a new Adaptive Activity
var canNavigate = authorApp.navigate('activities/new/adaptive');
console.log(canNavigate);
Advanced tag filtering: From August 2026 in the developer version, you can use flat all, either, and none filters with both the items/search/ and activities/search/ routes.
In this example, all requires Math AND Grade 5, either requires Hard OR Medium, and none excludes Items that have both Retired AND Draft.
var canNavigate = authorApp.navigate('items/search/' + encodeURIComponent(
JSON.stringify({
"tags": {
"all": [
{ "type": "subject", "name": "Math" },
{ "type": "grade", "name": "Grade 5" }
],
"either": [
{ "type": "difficulty", "name": "Hard" },
{ "type": "difficulty", "name": "Medium" }
],
"none": [
{ "type": "status", "name": "Retired" },
{ "type": "status", "name": "Draft" }
]
}
})
));
console.log(canNavigate);
Nested tag filtering: From August 2026 in the developer version, you can also use nested arrays to group boolean tag-filtering logic.
- A nested
eitherapplies OR within each sub-array and AND between sub-arrays. For example,(Subject:Math OR Subject:Science) AND (Grade:5 OR Grade:6). - A nested
noneexcludes Items that match any of the groups. For example,NOT(Status:Retired AND Status:Archived) AND NOT(Status:Draft). - Nested arrays within
allare flattened internally, so nesting does not change the filtering behavior. For example,Curriculum:Common Core AND Language:English.
var canNavigate = authorApp.navigate('items/search/' + encodeURIComponent(
JSON.stringify({
"tags": {
"either": [
[
{ "type": "Subject", "name": "Math" },
{ "type": "Subject", "name": "Science" }
],
[
{ "type": "Grade", "name": "5" },
{ "type": "Grade", "name": "6" }
]
],
"none": [
[
{ "type": "Status", "name": "Retired" },
{ "type": "Status", "name": "Archived" }
],
[
{ "type": "Status", "name": "Draft" }
]
],
"all": [
[
{ "type": "Curriculum", "name": "Common Core" }
],
[
{ "type": "language", "name": "English" }
]
]
}
})
));
console.log(canNavigate);
Arguments
-
location string
The view to navigate to, including all required references and URL parameters.
Note All data in the
locationstring should be URI encoded.From August 2026 in the developer version, the JSON encoded search parameters can include a
tagsobject with three properties:all,either, andnone. You can use these properties to construct inclusion and exclusion filters. This is distinct from the browse-based hierarchy Tag filtering shown in the examples below, which uses thebrowseparameter to filter by Tag hierarchies.
Return value
Type boolean
Before executing, this method will check if the new location is valid and is not the current location.
Returns true if it is possible to navigate.
Returns false if unable to navigate.
Note The return value indicates only whether navigation is possible to the new location based on validation. It does not indicate that the navigation has completed.
Caveats
Navigating multiple times in quick succession can have unintended side effects. It is recommended to listen for a relevant event to fire before navigating again.
You cannot use tags.none on its own. When using tags.none, you must also include either tags.all or tags.either in the same request.
Related articles
- Building Your Own Author API User Journey Using .navigate()
- The
getLocation()method, which allows you to get the current authoring location. - Understanding Tag Formats for Content Creation and Filtering - advanced tag search parameter formats