Google Keep Notes API
The Notes API from Google Keep — 1 operation(s) for notes.
The Notes API from Google Keep — 1 operation(s) for notes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/google-keep:google-keep-notes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Google Keep Notes API
version: v1
description: Generated from Google's published Discovery document for Google Keep API (keep v1, revision 20261107). 6 operation(s).
contact:
name: Google
url: https://developers.google.com/
termsOfService: https://developers.google.com/terms
servers:
- url: https://keep.googleapis.com
tags:
- name: Notes
paths:
/v1/notes/{notesId}:
delete:
operationId: keep.notes.delete
summary: Delete notes
description: Deletes a note. Caller must have the `OWNER` role on the note to delete. Deleting a note removes the resource immediately and cannot be undone. Any collaborators will lose access to the note.
parameters:
- name: notesId
in: path
required: true
description: Resource name segment (notesId).
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- apiKey: []
tags:
- Notes
get:
operationId: keep.notes.get
summary: Get notes
description: Gets a note.
parameters:
- name: notesId
in: path
required: true
description: Resource name segment (notesId).
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Note'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- https://www.googleapis.com/auth/keep.readonly
- apiKey: []
tags:
- Notes
/v1/notes:
get:
operationId: keep.notes.list
summary: List notes
description: Lists notes. Every list call returns a page of results with `page_size` as the upper bound of returned items. A `page_size` of zero allows the server to choose the upper bound. The ListNotesResponse contains at most `page_size` entries. If there are more things left to list, it provides a `next_page_token` value. (Page tokens are opaque values.) To get the next page of results, copy the result's `next_page_token` into the next request's `page_token`. Repeat until the `next_page_token` returned with a page of results is empty. ListNotes return consistent results in the face of concurrent changes, or signals that it cannot with an ABORTED error.
parameters:
- name: filter
in: query
required: false
description: 'Filter for list results. If no filter is supplied, the `trashed` filter is applied by default. Valid fields to filter by are: `create_time`, `update_time`, `trash_time`, and `trashed`. Filter syntax follows the [Google AIP filtering spec](https://aip.dev/160).'
schema:
type: string
- name: pageSize
in: query
required: false
description: The maximum number of results to return.
schema:
type: integer
format: int32
- name: pageToken
in: query
required: false
description: The previous page's `next_page_token` field.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListNotesResponse'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- https://www.googleapis.com/auth/keep.readonly
- apiKey: []
tags:
- Notes
post:
operationId: keep.notes.create
summary: Create notes
description: Creates a new note.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Note'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Note'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- apiKey: []
tags:
- Notes
/v1/notes/{notesId}/permissions:batchCreate:
post:
operationId: keep.notes.permissions.batchCreate
summary: Batch create permissions
description: Creates one or more permissions on the note. Only permissions with the `WRITER` role may be created. If adding any permission fails, then the entire request fails and no changes are made.
parameters:
- name: notesId
in: path
required: true
description: Resource name segment (notesId).
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreatePermissionsRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreatePermissionsResponse'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- apiKey: []
tags:
- Notes
/v1/notes/{notesId}/permissions:batchDelete:
post:
operationId: keep.notes.permissions.batchDelete
summary: Batch delete permissions
description: Deletes one or more permissions on the note. The specified entities will immediately lose access. A permission with the `OWNER` role can't be removed. If removing a permission fails, then the entire request fails and no changes are made. Returns a 400 bad request error if a specified permission does not exist on the note.
parameters:
- name: notesId
in: path
required: true
description: Resource name segment (notesId).
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchDeletePermissionsRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: 'Client error (google.rpc.Status: INVALID_ARGUMENT, PERMISSION_DENIED, NOT_FOUND ...)'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/GoogleRpcError'
description: Error response (google.rpc.Status)
security:
- oauth2:
- https://www.googleapis.com/auth/keep
- apiKey: []
tags:
- Notes
components:
schemas:
BatchDeletePermissionsRequest:
type: object
description: The request to remove one or more permissions from a note. A permission with the `OWNER` role can't be removed. If removing a permission fails, then the entire request fails and no changes are made. Returns a 400 bad request error if a specified permission does not exist on the note.
properties:
names:
type: array
items:
type: string
description: 'Required. The names of the permissions to delete. Format: `notes/{note}/permissions/{permission}`'
BatchCreatePermissionsRequest:
type: object
description: The request to add one or more permissions on the note. Currently, only the `WRITER` role may be specified. If adding a permission fails, then the entire request fails and no changes are made.
properties:
requests:
items:
$ref: '#/components/schemas/CreatePermissionRequest'
description: The request message specifying the resources to create.
type: array
User:
type: object
properties:
email:
description: The user's email.
type: string
description: Describes a single user.
CreatePermissionRequest:
type: object
description: The request to add a single permission on the note.
properties:
parent:
description: 'Required. The parent note where this permission will be created. Format: `notes/{note}`'
type: string
permission:
$ref: '#/components/schemas/Permission'
description: Required. The permission to create. One of Permission.email, User.email or Group.email must be supplied.
Note:
type: object
properties:
name:
type: string
readOnly: true
description: Output only. The resource name of this note. See general note on identifiers in KeepService.
body:
$ref: '#/components/schemas/Section'
description: The body of the note.
title:
type: string
description: The title of the note. Length must be less than 1,000 characters.
updateTime:
type: string
description: Output only. When this note was last modified.
format: google-datetime
readOnly: true
permissions:
description: Output only. The list of permissions set on the note. Contains at least one entry for the note owner.
items:
$ref: '#/components/schemas/Permission'
readOnly: true
type: array
createTime:
readOnly: true
type: string
description: Output only. When this note was created.
format: google-datetime
attachments:
type: array
description: Output only. The attachments attached to this note.
items:
$ref: '#/components/schemas/Attachment'
readOnly: true
trashed:
type: boolean
readOnly: true
description: Output only. `true` if this note has been trashed. If trashed, the note is eventually deleted.
trashTime:
type: string
readOnly: true
format: google-datetime
description: Output only. When this note was trashed. If `trashed`, the note is eventually deleted. If the note is not trashed, this field is not set (and the trashed field is `false`).
description: A single note.
Family:
properties: {}
type: object
description: Describes a single Google Family.
ListItem:
type: object
description: A single list item in a note's list.
properties:
text:
$ref: '#/components/schemas/TextContent'
description: The text of this item. Length must be less than 1,000 characters.
childListItems:
description: If set, list of list items nested under this list item. Only one level of nesting is allowed.
items:
$ref: '#/components/schemas/ListItem'
type: array
checked:
type: boolean
description: Whether this item has been checked off or not.
Attachment:
properties:
name:
type: string
description: The resource name;
mimeType:
items:
type: string
type: array
description: The MIME types (IANA media types) in which the attachment is available.
description: An attachment to a note.
type: object
Group:
description: Describes a single Group.
properties:
email:
description: The group email.
type: string
type: object
Permission:
description: A single permission on the note. Associates a `member` with a `role`.
type: object
properties:
user:
$ref: '#/components/schemas/User'
description: Output only. The user to whom this role applies.
deleted:
description: Output only. Whether this member has been deleted. If the member is recovered, this value is set to false and the recovered member retains the role on the note.
readOnly: true
type: boolean
role:
type: string
enum:
- ROLE_UNSPECIFIED
- OWNER
- WRITER
description: The role granted by this permission. The role determines the entity’s ability to read, write, and share notes.
email:
type: string
description: The email associated with the member. If set on create, the `email` field in the `User` or `Group` message must either be empty or match this field. On read, may be unset if the member does not have an associated email.
family:
$ref: '#/components/schemas/Family'
description: Output only. The Google Family to which this role applies.
name:
description: Output only. The resource name.
type: string
readOnly: true
group:
$ref: '#/components/schemas/Group'
description: Output only. The group to which this role applies.
ListNotesResponse:
description: The response when listing a page of notes.
type: object
properties:
nextPageToken:
description: Next page's `page_token` field.
type: string
notes:
items:
$ref: '#/components/schemas/Note'
description: A page of notes.
type: array
Section:
description: The content of the note.
properties:
text:
$ref: '#/components/schemas/TextContent'
description: Used if this section's content is a block of text. The length of the text content must be less than 20,000 characters.
list:
$ref: '#/components/schemas/ListContent'
description: Used if this section's content is a list.
type: object
Empty:
properties: {}
description: 'A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }'
type: object
ListContent:
type: object
properties:
listItems:
items:
$ref: '#/components/schemas/ListItem'
description: The items in the list. The number of items must be less than 1,000.
type: array
description: The list of items for a single list note.
GoogleRpcError:
type: object
description: The error envelope every Google API returns.
properties:
error:
type: object
properties:
code:
type: integer
message:
type: string
status:
type: string
details:
type: array
items:
type: object
BatchCreatePermissionsResponse:
properties:
permissions:
items:
$ref: '#/components/schemas/Permission'
type: array
description: Permissions created.
description: The response for creating permissions on a note.
type: object
TextContent:
properties:
text:
description: The text of the note. The limits on this vary with the specific field using this type.
type: string
type: object
description: The block of text for a single text section or list item.
securitySchemes:
apiKey:
type: apiKey
in: query
name: key
description: API key; accepted by methods that do not need user data.
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://accounts.google.com/o/oauth2/auth
tokenUrl: https://oauth2.googleapis.com/token
scopes:
https://www.googleapis.com/auth/keep: See, edit, create and permanently delete all your Google Keep data
https://www.googleapis.com/auth/keep.readonly: View all your Google Keep data
externalDocs:
url: https://developers.google.com/workspace/keep/api
x-provenance:
method: harvested
publisher: Google
source: https://keep.googleapis.com/$discovery/rest?version=v1
note: converted by discovery-to-openapi.py from Google's Discovery document (revision 20261107)