• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Using the Blob Storage API for notebooks

Public preview

The Blob Storage API for notebooks is currently in public preview. This feature is provided pursuant to our pre-release policies.

The New Relic Notebooks API lets you create, read, update, and delete notebooks programmatically, including their full block content (NRQL queries, text). Notebooks are stored as versioned blobs, which means every save produces a new immutable revision you can retrieve later.

Use this API to:

  • Automate notebook creation from incident templates, runbooks, or CI/CD pipelines
  • Sync notebook content from version control or external authoring tools
  • Build integrations that programmatically populate notebooks during investigations

Importante

Notebooks use multiple APIs

The Notebooks API surface is split between two systems:

  • Blob Storage API handles notebook content (blocks, version history)

  • NerdGraph handles entity-level operations (list, rename, tags, organization metadata)

    This separation is by design. The Blob Storage API is optimized for file content transfer and versioning; NerdGraph is optimized for structured entity queries and mutations.

Prerequisites

Authentication

All Notebooks API requests require authentication using a New Relic User API key.

Generate an API key:

  1. Navigate to one.newrelic.com
  2. Click on your name in the top-right corner
  3. Select API Keys
  4. Create a User key (not Browser or License key)

Include in request headers:

bash
$
Api-Key: NRAK-YOUR-USER-API-KEY

Dica

The Blob Storage API also supports login context, so when calling the API from a UI authenticated as a New Relic user, the Api-Key header is not required.

Base endpoint

https://blob-api.service.newrelic.com/v1/e

For EU region accounts, use:

https://blob-api.service.eu.newrelic.com/v1/e

Notebook content operations

Entity operations (NerdGraph)

Entity-level operations such as listing, renaming, and tagging use NerdGraph rather than the Blob Storage API.

List all notebooks

query listAllNotebooks {
actor {
entityManagement {
entitySearch(query: "type='NOTEBOOK'") {
entities {
id
name
}
}
}
}
}

Dica

Entity creation is fully transactional, so a notebook is immediately available via the API. However, if you list notebooks through the legacy actor.entitySearch query, there may be a short propagation delay between creation and the notebook appearing in list results.

Rename a notebook

mutation changeNotebookName {
entityManagementUpdateNotebook(
id: "<entity guid>"
notebookEntity: { name: "<new name>" }
) {
entity {
name
}
}
}

Update notebook tags

Importante

Tag updates are a replace operation. You must include the complete set of tags, even ones that aren't changing — any tag omitted from the mutation will be removed.

mutation updateNotebookTags {
entityManagementUpdateNotebook(
id: "<entity guid>"
notebookEntity: {
tags: [
{ key: "<key>", values: "<value>" }
{ key: "<key>", values: "<value>" }
]
}
) {
entity {
name
tags {
key
values
}
}
}
}

Retrieve your organization ID

You'll need your organization ID for all Blob Storage API calls:

query getOrgId {
actor {
organization {
id
}
}
}

Best practices

  • Store entity GUIDs: Save the entityGuid returned from create operations. You'll need it for reading, updating, and deleting notebooks.
  • Validate JSON before upload: Ensure your notebook payload is valid JSON and conforms to the version schema before sending.
  • Use descriptive names: Notebook names must be unique within an organization, so choose names that clearly indicate purpose (for example, prod-checkout-investigation rather than notebook-1).
  • Include all tags on update: Tag updates replace the full tag set. Always read existing tags before mutating.
  • Recover quickly: Version history is retained for only 1 day. If you need long-term history, archive notebook content to your own storage on every update.
  • Secure your API key: Never expose your User API key in client-side code or public repositories.
  • Check HTTP status codes: The API returns 2xx for successful operations, 404 for not found, and other status codes for errors.

Common error responses

Status code

Description

Solution

400 Bad Request

Invalid request parameters, malformed JSON in body or NewRelic-Entity header, or notebook name already exists in this organization

Verify request format, header values, and that the notebook name is unique within your organization

401 Unauthorized

Missing or invalid API key

Check that your User API key is valid and included in the Api-Key header

404 Not Found

Notebook or version not found

Verify the entity GUID is correct

415 Unsupported Media Type

Incorrect Content-Type header

Use Content-Type: application/json

Additional resources

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.