The SDK uses a plug-in architecture (also known as dependency injection) for initializing that supports run-time specific transports (like
BrowserTransport) and different approaches for managing API authentication (like
DISCLAIMER: This is a beta version of the Looker SDK, using a completely new code generator developed by Looker. Implementations are still subject to change, but we expect most SDK method calls to work correctly. If you run into problems with the SDK, please feel free to report an issue, and please indicate which language SDK you're using in the report.
The Looker SDK can be used in a node application in 3 steps:
Install the Looker SDK into your node application
npm install @looker/sdk
yarn add @looker/sdk
Configure the SDK for your Looker server
.ini configuration for the Looker SDK is a sample implementation intended to speed up the initial development of Node applications using the Looker API. See this note on Securing your SDK Credentials for warnings about using
.ini files that contain your API credentials in a source code repository or production environment.
looker.ini file with your server URL and API credentials assigned as shown in this example.
[Looker]# Base URL for API. Do not include /api/* in the urlbase_url=https://<your-looker-server>:19999# API 3 client idclient_id=your_API3_client_id# API 3 client secretclient_secret=your_API3_client_secret
Note: If the application using the Looker SDK is going to be committed to a version control system, be sure to
looker.ini file so the API credentials aren't unintentionally published.
Use the SDK in your code
When the SDK is installed and the server location and API credentials are configured in your
looker.ini file, it's ready to be used.
Verify authentication works and that API calls will succeed with code similar to the following:
Developing with multiple API versions
Starting with Looker release 7.2, the experimental version of API 4.0 is available. To support iterative migration to API 4.0 from API 3.1, the single Looker SDK package now supports multiple API versions for the generated SDK classes. Both API 3.1 and API 4.0 are supported for Node and browser-based use.
looker.ini used by the code generator, multiple api versions can be indicated with:
# default values API versions to generateapi_versions=3.1,4.0
for example, which will generate files to
Looker31SDK() all initialize the API 3.1 implementation of the SDK.
Looker40SDK() all initalize the API 4.1 implementation of the SDK.
Code similar to the following can be used to develop with both the 3.1 and 4.0 SDKs in the same source file:
Using NodeSession for automatic authentication
Almost all requests to Looker's API require an access token. This token is established when the
login endpoint is called with correct API3 credentials for
login is successful, the user whose API3 credentials are provided is considered the active user. For this discussion of
call this user the API User.
settings provided to the
NodeSession class include the base URL for the Looker instance and the desired API version. When API requests are made, if the auth session is not yet established,
NodeSession will automatically authenticate the API User. The
NodeSession also directly supports logging in as another user, usually called
sudo as another user in the Looker browser application.
API users with appropriate permissions can
sudo as another user by specifying a specific user ID in the
NodeSession.login() method. Only one user can be impersonated at a time via
NodeSession. When a
sudo session is active, all SDK methods will be processed as that user.
Sudo behavior with NodeSession
The rest of this section shows sample code for typical use cases for authentication and sudo. This code sample is extracted directly from the sdk methods Jest tests, and assumes
apiUser is the default authenticated user record with
sudo abilities, and
sudoB are other enabled Looker user records.
Environment variable configuration
Environment variables can be used to configure access for the Node version of the Looker SDK.
Once the desired environment variables are set, the following code is all that's required to initialize the Looker SDK and retrieve the API credential's
Using a Proxy for authentication
With the introduction of CORS support in the Looker API (coming soon to a release near you) the Looker SDK can now be used directly in the browser on a different domain than the Looker server. Because all API endpoints require authentication except for Login, a proxy server can be used to retrieve the API auth token and return it to the browser session.
ProxySession is the SDK class specifically designed to make creating a proxy session simple. The source code example below shows how to override the
authenticate method for use in a CORS request scenario.
getProxyToken()is the call to the proxy server's API that returns the API auth token to use
- the code in the
- Sets CORS mode
- Sets the auth token header
- Identifies the Looker SDK version for the Looker server
By writing your own
getProxyToken() visible to this class, any proxied authentication workflow is supported.
Looker's open source repository of SDK Examples has more example scripts and applications that show how to use the Looker SDK.
A note about security
Any script or configuration file used to provide credentials to your Looker SDK instance needs to be secured.