openapi: 3.1.0
info:
title: Looker API
description: >-
The Looker API 4.0 provides programmatic access to the Looker business
intelligence platform. It allows you to manage and interact with Looks,
dashboards, queries, users, and other Looker resources. The API uses
client credentials (client_id and client_secret) for authentication and
returns JSON responses. Looker is part of Google Cloud and the API is
available on any Looker instance at the /api/4.0 path.
version: '4.0'
contact:
name: Google Cloud Looker Support
url: https://cloud.google.com/looker/docs/support
termsOfService: https://cloud.google.com/terms
license:
name: Google Cloud Terms
url: https://cloud.google.com/terms
externalDocs:
description: Looker API 4.0 Documentation
url: https://cloud.google.com/looker/docs/reference/looker-api/latest
servers:
- url: https://{instance}.looker.com/api/4.0
description: Looker Instance API
variables:
instance:
description: Your Looker instance hostname prefix
default: your-instance
- url: https://{instance}.cloud.looker.com/api/4.0
description: Looker (Google Cloud core) Instance API
variables:
instance:
description: Your Looker (Google Cloud core) instance hostname prefix
default: your-instance
tags:
- name: Auth
description: >-
Authentication endpoints for obtaining and managing API access
tokens using client credentials.
- name: Dashboard
description: >-
Manage dashboards, which are collections of tiles displaying
visualizations from queries. Dashboards support filters, layouts,
and can be shared across the organization.
- name: Look
description: >-
Manage Looks, which are saved queries with visualizations. A Look
contains a query definition and visualization configuration that can
be shared, scheduled, and embedded.
- name: Query
description: >-
Create and run queries against your Looker models. Queries define
the fields, filters, sorts, and limits used to retrieve data from
the underlying database through LookML models.
- name: User
description: >-
Manage Looker users including creating, updating, and retrieving
user accounts, credentials, roles, and sessions.
security:
- bearerAuth: []
paths:
/login:
post:
operationId: login
summary: Looker Log in
description: >-
Authenticates with the Looker API using client credentials and
returns an access token. The client_id and client_secret are
generated from the Looker Admin panel under Users > API Keys.
The returned access token must be included as a Bearer token in
the Authorization header for all subsequent API requests.
tags:
- Auth
security: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- client_id
- client_secret
properties:
client_id:
type: string
description: API client ID generated from Looker Admin
client_secret:
type: string
description: API client secret generated from Looker Admin
responses:
'200':
description: Successfully authenticated
content:
application/json:
schema:
$ref: '#/components/schemas/AccessToken'
'404':
description: Invalid client credentials
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/logout:
delete:
operationId: logout
summary: Looker Log Out
description: >-
Revokes the current API access token, ending the authenticated
session. After logout, the token can no longer be used.
tags:
- Auth
responses:
'204':
description: Successfully logged out
'404':
description: Session not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/looks:
get:
operationId: allLooks
summary: Looker List All Looks
description: >-
Returns a list of all Looks accessible to the authenticated user.
Supports filtering by fields to limit the response payload.
tags:
- Look
parameters:
- $ref: '#/components/parameters/fields'
responses:
'200':
description: List of Looks
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Look'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/looks/search:
get:
operationId: searchLooks
summary: Looker Search Looks
description: >-
Searches for Looks matching the specified criteria. Supports
filtering by title, description, space, user, and other
attributes. Results are paginated.
tags:
- Look
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- name: title
in: query
description: Filter by Look title (case-insensitive match)
schema:
type: string
- name: description
in: query
description: Filter by Look description
schema:
type: string
- name: space_id
in: query
description: Filter by space (folder) ID
schema:
type: string
- name: user_id
in: query
description: Filter by creator user ID
schema:
type: string
- name: sorts
in: query
description: Sort fields (e.g. title asc, created_at desc)
schema:
type: string
responses:
'200':
description: Search results
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Look'
'400':
description: Invalid search parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/looks/{look_id}:
get:
operationId: look
summary: Looker Get a Look
description: >-
Retrieves a single Look by its ID, including the query definition,
visualization configuration, and metadata such as the creator,
space, and sharing settings.
tags:
- Look
parameters:
- $ref: '#/components/parameters/lookId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: Look details
content:
application/json:
schema:
$ref: '#/components/schemas/Look'
'404':
description: Look not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
patch:
operationId: updateLook
summary: Looker Update a Look
description: >-
Updates an existing Look. Only the fields provided in the request
body are updated; all other fields remain unchanged.
tags:
- Look
parameters:
- $ref: '#/components/parameters/lookId'
- $ref: '#/components/parameters/fields'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteLookWithQuery'
responses:
'200':
description: Updated Look
content:
application/json:
schema:
$ref: '#/components/schemas/Look'
'404':
description: Look not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
operationId: deleteLook
summary: Looker Delete a Look
description: >-
Permanently deletes the specified Look. This action cannot be
undone. The Look is moved to trash first if soft delete is
enabled.
tags:
- Look
parameters:
- $ref: '#/components/parameters/lookId'
responses:
'204':
description: Look deleted successfully
'404':
description: Look not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/looks/{look_id}/run/{result_format}:
get:
operationId: runLook
summary: Looker Run a Look
description: >-
Executes the query associated with a Look and returns the results
in the specified format. Supported formats include json, csv,
txt, xlsx, html, md, json_label, json_detail, and png.
tags:
- Look
parameters:
- $ref: '#/components/parameters/lookId'
- name: result_format
in: path
required: true
description: Format for the query results
schema:
type: string
enum:
- json
- csv
- txt
- xlsx
- html
- md
- json_label
- json_detail
- png
- $ref: '#/components/parameters/limit'
- name: apply_formatting
in: query
description: Whether to apply model-specified formatting to results
schema:
type: boolean
- name: apply_vis
in: query
description: Whether to apply visualization options to results
schema:
type: boolean
responses:
'200':
description: Query results in the specified format
content:
application/json:
schema:
type: string
text/csv:
schema:
type: string
'404':
description: Look not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/dashboards:
get:
operationId: allDashboards
summary: Looker List All Dashboards
description: >-
Returns a list of all dashboards accessible to the authenticated
user. User-defined dashboards and LookML dashboards are both
included. Use the fields parameter to limit response size.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/fields'
responses:
'200':
description: List of dashboards
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dashboard'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createDashboard
summary: Looker Create a Dashboard
description: >-
Creates a new user-defined dashboard. The dashboard can be
populated with tiles, filters, and layout settings after
creation or as part of the request body.
tags:
- Dashboard
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteDashboard'
responses:
'200':
description: Dashboard created
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/dashboards/search:
get:
operationId: searchDashboards
summary: Looker Search Dashboards
description: >-
Searches for dashboards matching the specified criteria including
title, description, space, and creator. Results are paginated.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- name: title
in: query
description: Filter by dashboard title
schema:
type: string
- name: description
in: query
description: Filter by dashboard description
schema:
type: string
- name: space_id
in: query
description: Filter by space (folder) ID
schema:
type: string
- name: user_id
in: query
description: Filter by creator user ID
schema:
type: string
- name: sorts
in: query
description: Sort fields
schema:
type: string
responses:
'200':
description: Search results
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dashboard'
'400':
description: Invalid search parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/dashboards/{dashboard_id}:
get:
operationId: dashboard
summary: Looker Get a Dashboard
description: >-
Retrieves a single dashboard by its ID, including all dashboard
elements (tiles), filters, and layout configuration. For
user-defined dashboards the ID is numeric; for LookML dashboards
the ID is the model::dashboard_name string.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/dashboardId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: Dashboard details
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
'404':
description: Dashboard not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
patch:
operationId: updateDashboard
summary: Looker Update a Dashboard
description: >-
Updates an existing dashboard. Only the fields provided in the
request body are updated. Dashboard elements and filters can
be updated through their own dedicated endpoints.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/dashboardId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteDashboard'
responses:
'200':
description: Updated dashboard
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
'404':
description: Dashboard not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
operationId: deleteDashboard
summary: Looker Delete a Dashboard
description: >-
Permanently deletes the specified dashboard and all of its
elements, filters, and layout configuration. This action
cannot be undone.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/dashboardId'
responses:
'204':
description: Dashboard deleted successfully
'404':
description: Dashboard not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/dashboards/{dashboard_id}/dashboard_elements:
get:
operationId: dashboardDashboardElements
summary: Looker List Dashboard Elements
description: >-
Returns all elements (tiles) for the specified dashboard. Each
element contains a query, a Look reference, or a text/markdown
content block along with positioning and size information.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/dashboardId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: List of dashboard elements
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DashboardElement'
'404':
description: Dashboard not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/dashboards/{dashboard_id}/dashboard_filters:
get:
operationId: dashboardDashboardFilters
summary: Looker List Dashboard Filters
description: >-
Returns all filters defined on the specified dashboard. Dashboard
filters allow users to dynamically change query parameters across
all tiles that listen to a given filter.
tags:
- Dashboard
parameters:
- $ref: '#/components/parameters/dashboardId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: List of dashboard filters
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DashboardFilter'
'404':
description: Dashboard not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/queries:
post:
operationId: createQuery
summary: Looker Create a Query
description: >-
Creates a new query object. A query defines the model, view,
fields, filters, sorts, and limit used to retrieve data from
the underlying database. The query is not executed until you
call the run_query endpoint. Queries are immutable once created.
tags:
- Query
parameters:
- $ref: '#/components/parameters/fields'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteQuery'
responses:
'200':
description: Query created
content:
application/json:
schema:
$ref: '#/components/schemas/Query'
'400':
description: Invalid query definition
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/queries/{query_id}:
get:
operationId: query
summary: Looker Get a Query
description: >-
Retrieves a query object by its ID. Returns the query
definition including the model, view, fields, filters,
sorts, and limit.
tags:
- Query
parameters:
- $ref: '#/components/parameters/queryId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: Query details
content:
application/json:
schema:
$ref: '#/components/schemas/Query'
'404':
description: Query not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/queries/{query_id}/run/{result_format}:
get:
operationId: runQuery
summary: Looker Run a Saved Query
description: >-
Executes a previously saved query and returns results in the
specified format. The query must already exist. Supported
formats include json, csv, txt, xlsx, html, md, json_label,
json_detail, sql, and png.
tags:
- Query
parameters:
- $ref: '#/components/parameters/queryId'
- name: result_format
in: path
required: true
description: Format for the query results
schema:
type: string
enum:
- json
- csv
- txt
- xlsx
- html
- md
- json_label
- json_detail
- sql
- png
- $ref: '#/components/parameters/limit'
- name: apply_formatting
in: query
description: Whether to apply model-specified formatting
schema:
type: boolean
- name: apply_vis
in: query
description: Whether to apply visualization options
schema:
type: boolean
- name: cache
in: query
description: Whether to use cached results if available
schema:
type: boolean
default: true
- name: generate_drill_links
in: query
description: Whether to generate drill links in results
schema:
type: boolean
default: true
- name: force_production
in: query
description: Whether to force use of production models
schema:
type: boolean
default: false
responses:
'200':
description: Query results in the requested format
content:
application/json:
schema:
type: string
text/csv:
schema:
type: string
'404':
description: Query not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/queries/run/{result_format}:
post:
operationId: runInlineQuery
summary: Looker Run an Inline Query
description: >-
Creates and immediately executes a query in a single request.
The query definition is provided in the request body and does
not need to be saved first. This is useful for ad-hoc queries.
tags:
- Query
parameters:
- name: result_format
in: path
required: true
description: Format for the query results
schema:
type: string
enum:
- json
- csv
- txt
- xlsx
- html
- md
- json_label
- json_detail
- sql
- png
- $ref: '#/components/parameters/limit'
- name: apply_formatting
in: query
description: Whether to apply model-specified formatting
schema:
type: boolean
- name: apply_vis
in: query
description: Whether to apply visualization options
schema:
type: boolean
- name: cache
in: query
description: Whether to use cached results
schema:
type: boolean
default: true
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteQuery'
responses:
'200':
description: Query results in the requested format
content:
application/json:
schema:
type: string
text/csv:
schema:
type: string
'400':
description: Invalid query definition
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/users:
get:
operationId: allUsers
summary: Looker List All Users
description: >-
Returns a list of all Looker user accounts. The response includes
basic user information. Use the fields parameter to include
additional details such as roles, credentials, and sessions.
tags:
- User
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- name: sorts
in: query
description: Sort fields (e.g. last_name asc, created_at desc)
schema:
type: string
- name: ids
in: query
description: Comma-separated list of user IDs to retrieve
schema:
type: string
responses:
'200':
description: List of users
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createUser
summary: Looker Create a User
description: >-
Creates a new Looker user account. The new user will not have
any credentials or roles assigned; those must be configured
separately via the credentials and role endpoints.
tags:
- User
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteUser'
responses:
'200':
description: User created
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/users/search:
get:
operationId: searchUsers
summary: Looker Search Users
description: >-
Searches for users matching the specified criteria. Supports
filtering by name, email, and other user attributes. Results
are paginated.
tags:
- User
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- name: first_name
in: query
description: Filter by first name
schema:
type: string
- name: last_name
in: query
description: Filter by last name
schema:
type: string
- name: email
in: query
description: Filter by email address
schema:
type: string
- name: is_disabled
in: query
description: Filter by disabled status
schema:
type: boolean
- name: sorts
in: query
description: Sort fields
schema:
type: string
responses:
'200':
description: Search results
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
'400':
description: Invalid search parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/users/{user_id}:
get:
operationId: user
summary: Looker Get a User
description: >-
Retrieves a single user by their ID including their profile
information, roles, and credential settings.
tags:
- User
parameters:
- $ref: '#/components/parameters/userId'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: User details
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
patch:
operationId: updateUser
summary: Looker Update a User
description: >-
Updates an existing user account. Only the fields provided in
the request body are updated. Credentials and roles are managed
through separate endpoints.
tags:
- User
parameters:
- $ref: '#/components/parameters/userId'
- $ref: '#/components/parameters/fields'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WriteUser'
responses:
'200':
description: Updated user
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
operationId: deleteUser
summary: Looker Delete a User
description: >-
Permanently deletes the specified user account. This removes
the user and all their credentials. Content created by the
user (dashboards, Looks, etc.) is not deleted.
tags:
- User
parameters:
- $ref: '#/components/parameters/userId'
responses:
'204':
description: User deleted successfully
'404':
description: User not found
content:
# --- truncated at 32 KB (77 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/looker/refs/heads/main/openapi/looker-api-openapi.yml