Google Keep Notes API

The Notes API from Google Keep — 1 operation(s) for notes.

GitHub OpenAPI

Operations 6

DELETE /v1/notes/{notesId} Delete notes #
GET /v1/notes/{notesId} Get notes #
GET /v1/notes List notes #
POST /v1/notes Create notes #
POST /v1/notes/{notesId}/permissions:batchCreate Batch create permissions #
POST /v1/notes/{notesId}/permissions:batchDelete Batch delete permissions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/google-keep:google-keep-notes-api"
All apis
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.

Get an API 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 Specification

google-keep-notes-api-openapi.yml Raw ↑
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)