| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
The Glean TypeScript SDK provides convenient access to the Glean REST API in both browser and Node.js environments. It offers full TypeScript types, modern async/await support, and uses the fetch API under the hood.
This SDK combines both the Client and Indexing API namespaces into a single unified package:
Each namespace has its own authentication requirements and access patterns. While they serve different purposes, having them in a single SDK provides a consistent developer experience across all Glean API interactions.
// Example of accessing Client namespace
const glean = new Glean({
serverURL: "https://mycompany-be.glean.com",
apiToken: 'client-token'
});
await glean.client.search.query({
query: 'search term'
});
// Example of accessing Indexing namespace
const glean = new Glean({
serverURL: "https://mycompany-be.glean.com",
apiToken: 'indexing-token'
});
await glean.indexing.documents.index({
/* document data */
});Remember that each namespace requires its own authentication token type as described in the Authentication Methods section.
Glean API: # Introduction In addition to the data sources that Glean has built-in support for, Glean also provides a REST API that enables customers to put arbitrary content in the search index. This is useful, for example, for doing permissions-aware search over content in internal tools that reside on-prem as well as for searching over applications that Glean does not currently support first class. In addition these APIs allow the customer to push organization data (people info, organization structure etc) into Glean.
This API is evolving fast. Glean will provide advance notice of any planned backwards incompatible changes along with a 6-month sunset period for anything that requires developers to adopt the new versions.
Official API clients for the Glean Indexing API are available in multiple languages:
These API clients provide type-safe, idiomatic interfaces for working with Glean IndexingAPIs in your language of choice.
The SDK can be installed with either npm, pnpm, bun or yarn package managers.
npm add @gleanwork/api-client
# Install optional peer dependencies if you plan to use React hooks
npm add @tanstack/react-query react react-dompnpm add @gleanwork/api-client
# Install optional peer dependencies if you plan to use React hooks
pnpm add @tanstack/react-query react react-dombun add @gleanwork/api-client
# Install optional peer dependencies if you plan to use React hooks
bun add @tanstack/react-query react react-domyarn add @gleanwork/api-client
# Install optional peer dependencies if you plan to use React hooks
yarn add @tanstack/react-query react react-domNote
This package is published with CommonJS and ES Modules (ESM) support.
For supported JavaScript runtimes, please consult RUNTIMES.md.
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.client.chat.create({
messages: [
{
fragments: [
{
text: "What are the company holidays this year?",
},
],
},
],
});
console.log(result);
}
run();import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.client.chat.createStream({
messages: [
{
fragments: [
{
text: "What are the company holidays this year?",
},
],
},
],
});
console.log(result);
}
run();This SDK supports the following security scheme globally:
| Name | Type | Scheme | Environment Variable |
|---|---|---|---|
| apiToken | http | HTTP Bearer | GLEAN_API_TOKEN |
To authenticate with the API the apiToken parameter must be set when initializing the SDK client instance. For example:
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.agents.search({
name: "HR Policy Agent",
});
console.log(result);
}
run();Glean supports different authentication methods depending on which API namespace you're using:
The Client namespace supports two authentication methods:
Manually Provisioned API Tokens
OAuth
The Indexing namespace supports only one authentication method:
Important
Client tokens will not work for Indexing operations, and Indexing tokens will not work for Client operations. You must use the appropriate token type for the namespace you're accessing.
For more information on obtaining the appropriate token type, please contact your Glean administrator.
Available methodsaddOrUpdate - Index document
index - Index documents
bulkIndex - Bulk index documents
processAll - Schedules the processing of uploaded documents
delete - Delete document
debug - Beta: Get document information
debugMany - Beta: Get information of a batch of documents
checkAccess - Check document access
status - Get document upload and indexing status ⚠️ Deprecated
count - Get document count ⚠️ Deprecated
debugEvents - Beta: Get document lifecycle events
debug - Beta: Get user information
count - Get user count ⚠️ Deprecated
index - Index employee
bulkIndex - Bulk index employees ⚠️ Deprecated
processAllEmployeesAndTeams - Schedules the processing of uploaded employees and teams
delete - Delete employee
indexTeam - Index team
deleteTeam - Delete team
bulkIndexTeams - Bulk index teams
All the methods listed above are available as standalone functions. These functions are ideal for use in applications running in the browser, serverless runtimes or other environments where application bundle size is a primary concern. When using a bundler to build your application, all unused functionality will be either excluded from the final bundle or tree-shaken away.
To read more about standalone functions, check FUNCTIONS.md.
Available standalone functionsagentsCreateRun - Create agent run
agentsGet - Get agent
agentsGetSchemas - Get agent schemas
agentsSearch - Search agents
chatCreate - Create a chat response
clientActivityFeedback - Report client activity
clientActivityReport - Report document activity
clientAgentsCreate - Create an agent
clientAgentsImport - Import an agent
clientAgentsList - Search agents
clientAgentsRetrieve - Retrieve an agent
clientAgentsRetrieveSchemas - List an agent's schemas
clientAgentsRun - Create an agent run and wait for the response
clientAgentsRunStream - Create an agent run and stream the response
clientAgentsUpdate - Edit an agent
clientAnnouncementsCreate - Create Announcement
clientAnnouncementsDelete - Delete Announcement
clientAnnouncementsUpdate - Update Announcement
clientAnswersCreate - Create Answer
clientAnswersDelete - Delete Answer
clientAnswersRetrieve - Read Answer
clientAnswersUpdate - Update Answer
clientAuthenticationCheckDatasourceAuth - Check datasource authorization
clientAuthenticationCreateToken - Create authentication token
clientChatCreate - Chat
clientChatCreateStream - Chat
clientChatDelete - Deletes saved Chats
clientChatDeleteAll - Deletes all saved Chats owned by a user
clientChatDeleteFiles - Delete files uploaded by a user for chat
clientChatList - Retrieves all saved Chats
clientChatRetrieve - Retrieves a Chat
clientChatRetrieveApplication - Gets the metadata for a custom Chat application
clientChatRetrieveFile - Download a chat file
clientChatRetrieveFiles - Get files uploaded by a user for Chat
clientChatUploadFiles - Upload files for Chat
clientCollectionsAddItems - Add Collection item
clientCollectionsCreate - Create Collection
clientCollectionsDelete - Delete Collection
clientCollectionsDeleteItem - Delete Collection item
clientCollectionsList - List Collections
clientCollectionsRetrieve - Read Collection
clientCollectionsUpdate - Update Collection
clientCollectionsUpdateItem - Update Collection item
clientDatasourcesRetrieveConfiguration - Get datasource instance configuration
clientDatasourcesRetrieveCredentialStatus - Get datasource instance credential status
clientDatasourcesRotateCredentials - Rotate datasource instance credentials
clientDatasourcesUpdateConfiguration - Update datasource instance configuration
clientDocumentsRetrieve - Read documents
clientDocumentsRetrieveByFacets - Read documents by facets
clientDocumentsRetrievePermissions - Read document permissions
clientDocumentsSummarize - Summarize documents
clientEntitiesList - List entities
clientEntitiesReadPeople - Read people
clientEntitiesRetrievePersonPhoto - Get person photo
clientGovernanceDataFindingsCreate - Creates findings export
clientGovernanceDataFindingsDelete - Deletes findings export
clientGovernanceDataFindingsDownload - Downloads findings export
clientGovernanceDataFindingsList - Lists findings exports
clientGovernanceDataPoliciesCreate - Creates new policy
clientGovernanceDataPoliciesDownload - Downloads violations CSV for policy
clientGovernanceDataPoliciesList - Lists policies
clientGovernanceDataPoliciesRetrieve - Gets specified policy
clientGovernanceDataPoliciesUpdate - Updates an existing policy
clientGovernanceDataReportsCreate - Creates new one-time report
clientGovernanceDataReportsDownload - Downloads violations CSV for report
clientGovernanceDataReportsStatus - Fetches report run status
clientGovernanceDocumentsVisibilityoverridesCreate - Hide or unhide docs
clientGovernanceDocumentsVisibilityoverridesList - Fetches documents visibility
clientInsightsRetrieve - Get insights
clientMessagesRetrieve - Read messages
clientPinsCreate - Create pin
clientPinsList - List pins
clientPinsRemove - Delete pin
clientPinsRetrieve - Read pin
clientPinsUpdate - Update pin
clientSearchAutocomplete - Autocomplete
clientSearchQuery - Search
clientSearchQueryAsAdmin - Search the index (admin)
clientSearchRecommendations - Recommend documents
clientSearchRetrieveFeed - Feed of documents and events
clientShortcutsCreate - Create shortcut
clientShortcutsDelete - Delete shortcut
clientShortcutsList - List shortcuts
clientShortcutsRetrieve - Read shortcut
clientShortcutsUpdate - Update shortcut
clientToolsAuthorizeActionPack - Start the OAuth authorization flow for an action pack.
clientToolsAuthorizeToolServer - Start the OAuth authorization flow for a tool server.
clientToolsGetToolServerTools - Get tool definitions from a tool server.
clientToolsList - List available tools
clientToolsRetrieveActionPackAuthStatus - Get end-user authentication status for an action pack.
clientToolsRetrieveToolServerAuthStatus - Get end-user authentication status for a tool server.
clientToolsRun - Execute the specified tool
clientVerificationAddReminder - Create verification
clientVerificationList - List verifications
clientVerificationVerify - Update verification
indexingAuthenticationRotateToken - Rotate token
indexingCustomMetadataDelete - Remove custom metadata
indexingCustomMetadataDeleteSchema - Remove metadata schema
indexingCustomMetadataGetSchema - Retrieve metadata schema
indexingCustomMetadataUpsert - Add or update custom metadata
indexingCustomMetadataUpsertSchema - Create or update metadata schema
indexingDatasourcesAdd - Add or update datasource
indexingDatasourcesRetrieveConfig - Get datasource config
indexingDatasourcesSubmit - Submit datasource data
indexingDatasourceStatus - Beta: Get datasource status
indexingDocumentsAddOrUpdate - Index document
indexingDocumentsBulkIndex - Bulk index documents
indexingDocumentsCheckAccess - Check document access
indexingDocumentsDebug - Beta: Get document information
indexingDocumentsDebugEvents - Beta: Get document lifecycle events
indexingDocumentsDebugMany - Beta: Get information of a batch of documents
indexingDocumentsDelete - Delete document
indexingDocumentsIndex - Index documents
indexingDocumentsProcessAll - Schedules the processing of uploaded documents
indexingPeopleBulkIndexTeams - Bulk index teams
indexingPeopleDebug - Beta: Get user information
indexingPeopleDelete - Delete employee
indexingPeopleDeleteTeam - Delete team
indexingPeopleIndex - Index employee
indexingPeopleIndexTeam - Index team
indexingPeopleProcessAllEmployeesAndTeams - Schedules the processing of uploaded employees and teams
indexingPermissionsAuthorizeBetaUsers - Beta users
indexingPermissionsBulkIndexGroups - Bulk index groups
indexingPermissionsBulkIndexMemberships - Bulk index memberships for a group
indexingPermissionsBulkIndexUsers - Bulk index users
indexingPermissionsDeleteGroup - Delete group
indexingPermissionsDeleteMembership - Delete membership
indexingPermissionsDeleteUser - Delete user
indexingPermissionsIndexGroup - Index group
indexingPermissionsIndexMembership - Index membership
indexingPermissionsIndexUser - Index user
indexingPermissionsProcessMemberships - Schedules the processing of group memberships
indexingPermissionsUpdatePermissions - Update document permissions
indexingShortcutsBulkIndex - Bulk index external shortcuts
indexingShortcutsUpload - Upload shortcuts
searchListFilters - List search filters
searchQuery - Search
skillsCreate - Create skill
skillsCreateVersion - Create skill version
skillsDelete - Delete skill
skillsImport - Import skills from GitHub
skillsList - List skills
skillsListVersions - List skill versions
skillsPreviewSource - Preview a GitHub skill source
skillsRetrieve - Retrieve skill
skillsRetrieveContent - Download skill content
skillsRetrieveVersion - Retrieve skill version
skillsRetrieveVersionContent - Download skill version content
skillsSync - Sync a GitHub-imported skill
skillsUpdate - Update skill
skillsValidate - Validate skill bundle
triggersCreate - Create trigger
triggersDelete - Delete trigger
triggersGet - Get trigger
triggersGetPreset - Get trigger preset
triggersList - List triggers
triggersListPresetInputValues - Search trigger preset input values
triggersListPresets - List trigger presets
triggersSearchEvents - Search events for a trigger
triggersSearchPresetEvents - Search events for a trigger preset
triggersUpdate - Update trigger
clientAnswersList - List Answers ⚠️ Deprecated
indexingDocumentsCount - Get document count ⚠️ Deprecated
indexingDocumentsStatus - Get document upload and indexing status ⚠️ Deprecated
indexingPeopleBulkIndex - Bulk index employees ⚠️ Deprecated
indexingPeopleCount - Get user count ⚠️ Deprecated
React hooks built on TanStack Query are included in this SDK. These hooks and the utility functions provided alongside them can be used to build rich applications that pull data from the API using one of the most popular asynchronous state management library.
To learn about this feature and how to get started, check REACT_QUERY.md.
Warning
This feature is currently in preview and is subject to breaking changes within the current major version of the SDK as we gather user feedback on it.
useAgentsCreateRunMutation - Create agent run
useAgentsGet - Get agent
useAgentsGetSchemas - Get agent schemas
useAgentsSearchMutation - Search agents
useChatCreateMutation - Create a chat response
useClientActivityFeedbackMutation - Report client activity
useClientActivityReportMutation - Report document activity
useClientAgentsCreateMutation - Create an agent
useClientAgentsImportMutation - Import an agent
useClientAgentsListMutation - Search agents
useClientAgentsRetrieve - Retrieve an agent
useClientAgentsRetrieveSchemas - List an agent's schemas
useClientAgentsRunMutation - Create an agent run and wait for the response
useClientAgentsRunStreamMutation - Create an agent run and stream the response
useClientAgentsUpdateMutation - Edit an agent
useClientAnnouncementsCreateMutation - Create Announcement
useClientAnnouncementsDeleteMutation - Delete Announcement
useClientAnnouncementsUpdateMutation - Update Announcement
useClientAnswersCreateMutation - Create Answer
useClientAnswersDeleteMutation - Delete Answer
useClientAnswersRetrieveMutation - Read Answer
useClientAnswersUpdateMutation - Update Answer
useClientAuthenticationCheckDatasourceAuthMutation - Check datasource authorization
useClientAuthenticationCreateTokenMutation - Create authentication token
useClientChatCreateMutation - Chat
useClientChatDeleteAllMutation - Deletes all saved Chats owned by a user
useClientChatDeleteFilesMutation - Delete files uploaded by a user for chat
useClientChatDeleteMutation - Deletes saved Chats
useClientChatListMutation - Retrieves all saved Chats
useClientChatRetrieveApplicationMutation - Gets the metadata for a custom Chat application
useClientChatRetrieveFile - Download a chat file
useClientChatRetrieveFilesMutation - Get files uploaded by a user for Chat
useClientChatRetrieveMutation - Retrieves a Chat
useClientChatUploadFilesMutation - Upload files for Chat
useClientCollectionsAddItemsMutation - Add Collection item
useClientCollectionsCreateMutation - Create Collection
useClientCollectionsDeleteItemMutation - Delete Collection item
useClientCollectionsDeleteMutation - Delete Collection
useClientCollectionsListMutation - List Collections
useClientCollectionsRetrieveMutation - Read Collection
useClientCollectionsUpdateItemMutation - Update Collection item
useClientCollectionsUpdateMutation - Update Collection
useClientDatasourcesRetrieveConfiguration - Get datasource instance configuration
useClientDatasourcesRetrieveCredentialStatus - Get datasource instance credential status
useClientDatasourcesRotateCredentialsMutation - Rotate datasource instance credentials
useClientDatasourcesUpdateConfigurationMutation - Update datasource instance configuration
useClientDocumentsRetrieveByFacetsMutation - Read documents by facets
useClientDocumentsRetrieveMutation - Read documents
useClientDocumentsRetrievePermissionsMutation - Read document permissions
useClientDocumentsSummarizeMutation - Summarize documents
useClientEntitiesListMutation - List entities
useClientEntitiesReadPeopleMutation - Read people
useClientEntitiesRetrievePersonPhoto - Get person photo
useClientGovernanceDataFindingsCreateMutation - Creates findings export
useClientGovernanceDataFindingsDeleteMutation - Deletes findings export
useClientGovernanceDataFindingsDownload - Downloads findings export
useClientGovernanceDataFindingsList - Lists findings exports
useClientGovernanceDataPoliciesCreateMutation - Creates new policy
useClientGovernanceDataPoliciesDownload - Downloads violations CSV for policy
useClientGovernanceDataPoliciesList - Lists policies
useClientGovernanceDataPoliciesRetrieve - Gets specified policy
useClientGovernanceDataPoliciesUpdateMutation - Updates an existing policy
useClientGovernanceDataReportsCreateMutation - Creates new one-time report
useClientGovernanceDataReportsDownload - Downloads violations CSV for report
useClientGovernanceDataReportsStatus - Fetches report run status
useClientGovernanceDocumentsVisibilityoverridesCreateMutation - Hide or unhide docs
useClientGovernanceDocumentsVisibilityoverridesList - Fetches documents visibility
useClientInsightsRetrieveMutation - Get insights
useClientMessagesRetrieveMutation - Read messages
useClientPinsCreateMutation - Create pin
useClientPinsListMutation - List pins
useClientPinsRemoveMutation - Delete pin
useClientPinsRetrieveMutation - Read pin
useClientPinsUpdateMutation - Update pin
useClientSearchAutocompleteMutation - Autocomplete
useClientSearchQueryAsAdminMutation - Search the index (admin)
useClientSearchQueryMutation - Search
useClientSearchRecommendationsMutation - Recommend documents
useClientSearchRetrieveFeedMutation - Feed of documents and events
useClientShortcutsCreateMutation - Create shortcut
useClientShortcutsDeleteMutation - Delete shortcut
useClientShortcutsListMutation - List shortcuts
useClientShortcutsRetrieveMutation - Read shortcut
useClientShortcutsUpdateMutation - Update shortcut
useClientToolsAuthorizeActionPackMutation - Start the OAuth authorization flow for an action pack.
useClientToolsAuthorizeToolServerMutation - Start the OAuth authorization flow for a tool server.
useClientToolsGetToolServerTools - Get tool definitions from a tool server.
useClientToolsList - List available tools
useClientToolsRetrieveActionPackAuthStatus - Get end-user authentication status for an action pack.
useClientToolsRetrieveToolServerAuthStatus - Get end-user authentication status for a tool server.
useClientToolsRunMutation - Execute the specified tool
useClientVerificationAddReminderMutation - Create verification
useClientVerificationListMutation - List verifications
useClientVerificationVerifyMutation - Update verification
useIndexingAuthenticationRotateTokenMutation - Rotate token
useIndexingCustomMetadataDeleteMutation - Remove custom metadata
useIndexingCustomMetadataDeleteSchemaMutation - Remove metadata schema
useIndexingCustomMetadataGetSchema - Retrieve metadata schema
useIndexingCustomMetadataUpsertMutation - Add or update custom metadata
useIndexingCustomMetadataUpsertSchemaMutation - Create or update metadata schema
useIndexingDatasourcesAddMutation - Add or update datasource
useIndexingDatasourcesRetrieveConfigMutation - Get datasource config
useIndexingDatasourcesSubmitMutation - Submit datasource data
useIndexingDatasourceStatusMutation - Beta: Get datasource status
useIndexingDocumentsAddOrUpdateMutation - Index document
useIndexingDocumentsBulkIndexMutation - Bulk index documents
useIndexingDocumentsCheckAccessMutation - Check document access
useIndexingDocumentsDebugEventsMutation - Beta: Get document lifecycle events
useIndexingDocumentsDebugManyMutation - Beta: Get information of a batch of documents
useIndexingDocumentsDebugMutation - Beta: Get document information
useIndexingDocumentsDeleteMutation - Delete document
useIndexingDocumentsIndexMutation - Index documents
useIndexingDocumentsProcessAllMutation - Schedules the processing of uploaded documents
useIndexingPeopleBulkIndexTeamsMutation - Bulk index teams
useIndexingPeopleDebugMutation - Beta: Get user information
useIndexingPeopleDeleteMutation - Delete employee
useIndexingPeopleDeleteTeamMutation - Delete team
useIndexingPeopleIndexMutation - Index employee
useIndexingPeopleIndexTeamMutation - Index team
useIndexingPeopleProcessAllEmployeesAndTeamsMutation - Schedules the processing of uploaded employees and teams
useIndexingPermissionsAuthorizeBetaUsersMutation - Beta users
useIndexingPermissionsBulkIndexGroupsMutation - Bulk index groups
useIndexingPermissionsBulkIndexMembershipsMutation - Bulk index memberships for a group
useIndexingPermissionsBulkIndexUsersMutation - Bulk index users
useIndexingPermissionsDeleteGroupMutation - Delete group
useIndexingPermissionsDeleteMembershipMutation - Delete membership
useIndexingPermissionsDeleteUserMutation - Delete user
useIndexingPermissionsIndexGroupMutation - Index group
useIndexingPermissionsIndexMembershipMutation - Index membership
useIndexingPermissionsIndexUserMutation - Index user
useIndexingPermissionsProcessMembershipsMutation - Schedules the processing of group memberships
useIndexingPermissionsUpdatePermissionsMutation - Update document permissions
useIndexingShortcutsBulkIndexMutation - Bulk index external shortcuts
useIndexingShortcutsUploadMutation - Upload shortcuts
useSearchListFilters - List search filters
useSearchQueryMutation - Search
useSkillsCreateMutation - Create skill
useSkillsCreateVersionMutation - Create skill version
useSkillsDeleteMutation - Delete skill
useSkillsImportMutation - Import skills from GitHub
useSkillsList - List skills
useSkillsListVersions - List skill versions
useSkillsPreviewSourceMutation - Preview a GitHub skill source
useSkillsRetrieve - Retrieve skill
useSkillsRetrieveContent - Download skill content
useSkillsRetrieveVersion - Retrieve skill version
useSkillsRetrieveVersionContent - Download skill version content
useSkillsSyncMutation - Sync a GitHub-imported skill
useSkillsUpdateMutation - Update skill
useSkillsValidateMutation - Validate skill bundle
useTriggersCreateMutation - Create trigger
useTriggersDeleteMutation - Delete trigger
useTriggersGet - Get trigger
useTriggersGetPreset - Get trigger preset
useTriggersList - List triggers
useTriggersListPresetInputValues - Search trigger preset input values
useTriggersListPresets - List trigger presets
useTriggersSearchEventsMutation - Search events for a trigger
useTriggersSearchPresetEventsMutation - Search events for a trigger preset
useTriggersUpdateMutation - Update trigger
useClientAnswersListMutation - List Answers ⚠️ Deprecated
useIndexingDocumentsCountMutation - Get document count ⚠️ Deprecated
useIndexingDocumentsStatusMutation - Get document upload and indexing status ⚠️ Deprecated
useIndexingPeopleBulkIndexMutation - Bulk index employees ⚠️ Deprecated
useIndexingPeopleCountMutation - Get user count ⚠️ Deprecated
Certain SDK methods accept files as part of a multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request.
Tip
Depending on your JavaScript runtime, there are convenient utilities that return a handle to a file without reading the entire contents into memory:
import { Glean } from "@gleanwork/api-client";
import { openAsBlob } from "node:fs";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.skills.create({
file: await openAsBlob("example.file"),
});
console.log(result);
}
run();Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
To change the default retry strategy for a single API call, simply provide a retryConfig object to the call:
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.agents.search({
name: "HR Policy Agent",
}, {
retries: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
console.log(result);
}
run();If you'd like to override the default retry strategy for all operations that support retries, you can provide a retryConfig at SDK initialization:
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
retryConfig: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.agents.search({
name: "HR Policy Agent",
});
console.log(result);
}
run();The following errors may be thrown by the SDK:
| Status Code | Description | Error Type | Content Type |
|---|---|---|---|
| 400 | Invalid Request | errors.GleanError | */* |
| 401 | Not Authorized | errors.GleanError | */* |
| 403 | Permission Denied | errors.GleanDataError | application/json |
| 408 | Request Timeout | errors.GleanError | */* |
| 422 | Invalid Query | errors.GleanDataError | application/json |
| 429 | Too Many Requests | errors.GleanError | */* |
| 4XX | Other Client Errors | errors.GleanError | */* |
| 5XX | Internal Server Errors | errors.GleanError | */* |
import { Glean } from "@gleanwork/api-client";****
import { GleanDataError, GleanError } from "glean/models/errors";
const glean = new Glean({
apiToken: process.env["GLEAN_BEARER_AUTH"] ?? "",
});
try {
const data = await glean.client.search.execute({
query: "What are the company holidays this year?",
});
console.log(data);
} catch (error) {
if (error instanceof GleanError) {
console.error(error.message);
console.error(error.statusCode);
console.error(error.rawResponse);
console.error(error.body);
}
// If the server returned structured data
if (error instanceof GleanDataError) {
console.error(error.errorMessages);
console.error(error.invalidOperators);
}
throw error;
}Validation errors can also occur when either method arguments or data returned from the server do not match the expected format. The SDKValidationError that is thrown as a result will capture the raw value that failed validation in an attribute called rawValue. Additionally, a pretty() method is available on this error that can be used to log a nicely formatted multi-line string since validation errors can list many issues and the plain error string may be difficult read when debugging.
In some rare cases, the SDK can fail to get a response from the server or even make the request due to unexpected circumstances such as network conditions. These types of errors are captured in the models/errors/httpclienterrors.ts module:
| HTTP Client Error | Description |
|---|---|
| RequestAbortedError | HTTP request was aborted by the client |
| RequestTimeoutError | HTTP request timed out due to an AbortSignal signal |
| ConnectionError | HTTP client was unable to make a request to a server |
| InvalidRequestError | Any input used to create a request is invalid |
| UnexpectedClientError | Unrecognised or unexpected error |
The default server https://{instance}-be.glean.com contains variables and is set to https://instance-name-be.glean.com by default. To override default values, the following parameters are available when initializing the SDK client instance:
| Variable | Parameter | Default | Description |
|---|---|---|---|
| instance | instance: string | "instance-name" | The instance name (typically the email domain without the TLD) that determines the deployment backend. |
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
serverIdx: 0,
instance: "instance-name",
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.agents.search({
name: "HR Policy Agent",
});
console.log(result);
}
run();The default server can be overridden globally by passing a URL to the serverURL: string optional parameter when initializing the SDK client instance. For example:
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
serverURL: "https://instance-name-be.glean.com",
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.agents.search({
name: "HR Policy Agent",
});
console.log(result);
}
run();The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
});
async function run() {
const result = await glean.indexing.datasources.submit(
{
"key": "<value>",
"key1": "<value>",
"key2": "<value>",
},
"<value>",
"<value>",
{
serverURL: "https://instance-name-be.glean.com",
},
);
console.log(result);
}
run();The TypeScript SDK makes API calls using an HTTPClient that wraps the native Fetch API. This client is a thin wrapper around fetch and provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle errors and response.
The HTTPClient constructor takes an optional fetcher argument that can be used to integrate a third-party HTTP client or when writing tests to mock out the HTTP client and feed in fixtures.
The following example shows how to:
import { Glean } from "@gleanwork/api-client";
import { ProxyAgent } from "undici";
import { HTTPClient } from "@gleanwork/api-client/lib/http";
const dispatcher = new ProxyAgent("http://proxy.example.com:8080");
const httpClient = new HTTPClient({
// 'fetcher' takes a function that has the same signature as native 'fetch'.
fetcher: (input, init) =>
// 'dispatcher' is specific to undici and not part of the standard Fetch API.
fetch(input, { ...init, dispatcher } as RequestInit),
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const sdk = new Glean({ httpClient: httpClient });You can setup your SDK to emit debug logs for SDK requests and responses.
You can pass a logger that matches console's interface as an SDK option.
Warning
Beware that debug logging will reveal secrets, like API tokens in headers, in log messages printed to a console or files. It's recommended to use this feature only during local development and not in production.
import { Glean } from "@gleanwork/api-client";
const sdk = new Glean({ debugLogger: console });You can also enable a default debug logger by setting an environment variable GLEAN_DEBUG to true.
The SDK provides options to test upcoming API changes before they become the default behavior. This is useful for:
You can configure these options either via environment variables or SDK constructor options:
// Set environment variables before initializing the SDK
process.env.X_GLEAN_EXCLUDE_DEPRECATED_AFTER = '2026-10-15';
process.env.X_GLEAN_INCLUDE_EXPERIMENTAL = 'true';
import { Glean } from "@gleanwork/api-client";
const glean = new Glean({
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
serverURL: "https://mycompany-be.glean.com",
});import { Glean } from "@gleanwork/api-client";
import type { SDKOptions } from "@gleanwork/api-client";
import type { XGleanOptions } from "@gleanwork/api-client/hooks/x-glean-options.js";
const opts = {
apiToken: process.env["GLEAN_API_TOKEN"] ?? "",
serverURL: "https://mycompany-be.glean.com",
excludeDeprecatedAfter: "2026-10-15",
includeExperimental: true,
} satisfies SDKOptions & XGleanOptions;
const glean = new Glean(opts);| Option | Environment Variable | Type | Description |
|---|---|---|---|
| excludeDeprecatedAfter | X_GLEAN_EXCLUDE_DEPRECATED_AFTER | string (date) | Exclude API endpoints that will be deprecated after this date (format: YYYY-MM-DD). Use this to test your integration against upcoming deprecations. |
| includeExperimental | X_GLEAN_INCLUDE_EXPERIMENTAL | boolean | When true, enables experimental API features that are not yet generally available. Use this to preview and test new functionality. |
Note
Environment variables take precedence over SDK constructor options when both are set.
Warning
Experimental features may change or be removed without notice. Do not rely on experimental features in production environments.
This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally looking for the latest version.
While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
| Back | FazBrowse Home | New Git URL |