Upsert a markdown library item Experimental; added in 9.6.0

PUT /api/markdowns/{id}

Spaces method and path for this operation:

put /s/{space_id}/api/markdowns/{id}

Refer to Spaces for more information.

Replaces the full state of a markdown library item. Partial updates are not supported. To make incremental changes, retrieve the item first, modify the fields you need, then send the complete object back.

If no item exists with the specified ID, a new one is created.

Headers

  • kbn-xsrf string Required

    A required header to protect against CSRF attacks

Path parameters

  • id string Required

    The unique ID of the markdown library item to be created or updated.

application/json

Body

  • content string Required

    The Markdown text rendered by the panel. Supports GitHub-flavored Markdown, including headings, paragraphs, lists, links, images, tables, blockquotes, and code blocks. Use \n for line breaks within JSON strings.

  • description string

    A short description of the markdown library item.

  • settings object

    Display settings for the markdown panel.

    Default value is {"open_links_in_new_tab" => true}. Additional properties are NOT allowed.

    Hide settings attribute Show settings attribute object
  • title string Required

    The markdown library item title.

    Minimum length is 1.

Responses

  • 200 application/json

    updated

    Hide response attributes Show response attributes object
    • data object Required

      Additional properties are NOT allowed.

      Hide data attributes Show data attributes object
      • content string Required

        The Markdown text rendered by the panel. Supports GitHub-flavored Markdown, including headings, paragraphs, lists, links, images, tables, blockquotes, and code blocks. Use \n for line breaks within JSON strings.

      • description string

        A short description of the markdown library item.

      • settings object

        Display settings for the markdown panel.

        Default value is {"open_links_in_new_tab" => true}. Additional properties are NOT allowed.

        Hide settings attribute Show settings attribute object
      • title string Required

        The markdown library item title.

        Minimum length is 1.

    • id string Required

      The unique ID of the markdown library item, as returned by the create or search endpoints.

    • meta object Required

      Additional properties are NOT allowed.

      Hide meta attributes Show meta attributes object
      • created_at string

        Timestamp when the object was created (ISO 8601).

      • created_by string

        User profile ID of the user who created the object.

      • managed boolean

        When true, the object is managed by Kibana and cannot be edited by users.

      • owner string

        Identifier of the plugin or team that owns this object.

      • updated_at string

        Timestamp when the object was last updated (ISO 8601).

      • updated_by string

        User profile ID of the user who last updated the object.

      • version string

        Internal version identifier for optimistic concurrency control.

  • 201 application/json

    created

    Hide response attributes Show response attributes object
    • data object Required

      Additional properties are NOT allowed.

      Hide data attributes Show data attributes object
      • content string Required

        The Markdown text rendered by the panel. Supports GitHub-flavored Markdown, including headings, paragraphs, lists, links, images, tables, blockquotes, and code blocks. Use \n for line breaks within JSON strings.

      • description string

        A short description of the markdown library item.

      • settings object

        Display settings for the markdown panel.

        Default value is {"open_links_in_new_tab" => true}. Additional properties are NOT allowed.

        Hide settings attribute Show settings attribute object
      • title string Required

        The markdown library item title.

        Minimum length is 1.

    • id string Required

      The unique ID of the markdown library item, as returned by the create or search endpoints.

    • meta object Required

      Additional properties are NOT allowed.

      Hide meta attributes Show meta attributes object
      • created_at string

        Timestamp when the object was created (ISO 8601).

      • created_by string

        User profile ID of the user who created the object.

      • managed boolean

        When true, the object is managed by Kibana and cannot be edited by users.

      • owner string

        Identifier of the plugin or team that owns this object.

      • updated_at string

        Timestamp when the object was last updated (ISO 8601).

      • updated_by string

        User profile ID of the user who last updated the object.

      • version string

        Internal version identifier for optimistic concurrency control.

  • 400

    invalid request

  • 403

    forbidden

PUT /api/markdowns/{id}
curl -X PUT "${KIBANA_URL}/api/markdowns/5e1f3a20-c4d6-11ef-be8b-3c7c2b9d1f4e" \
  -H "Authorization: ApiKey ${API_KEY}" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Web logs overview",
  "description": "Intro and context for the web logs dashboard.",
  "content": "## Web logs overview\n\nA quick reference for the **Kibana sample web logs** dataset (`kibana_sample_data_logs`).\n\n**Key metrics in this dashboard:**\n\n- Total request count by HTTP method\n- Average response size over time\n- Geographic distribution of client IPs\n- _New:_ error rate broken down by status code\n\n> Use the time picker above to narrow the dashboard to an incident window.\n\nFor field reference, see the [sample data documentation](https://www.elastic.co/docs/manage-data/ingest/sample-data).\n",
  "settings": {
    "open_links_in_new_tab": true
  }
}'
PUT kbn:/api/markdowns/5e1f3a20-c4d6-11ef-be8b-3c7c2b9d1f4e
{
  "title": "Web logs overview",
  "description": "Intro and context for the web logs dashboard.",
  "content": "## Web logs overview\n\nA quick reference for the **Kibana sample web logs** dataset (`kibana_sample_data_logs`).\n\n**Key metrics in this dashboard:**\n\n- Total request count by HTTP method\n- Average response size over time\n- Geographic distribution of client IPs\n- _New:_ error rate broken down by status code\n\n> Use the time picker above to narrow the dashboard to an incident window.\n\nFor field reference, see the [sample data documentation](https://www.elastic.co/docs/manage-data/ingest/sample-data).\n",
  "settings": {
    "open_links_in_new_tab": true
  }
}
Request example
{
  "content": "## Web logs overview\n\nA quick reference for the **Kibana sample web logs** dataset (`kibana_sample_data_logs`).\n\n**Key metrics in this dashboard:**\n\n- Total request count by HTTP method\n- Average response size over time\n- Geographic distribution of client IPs\n- _New:_ error rate broken down by status code\n\n> Use the time picker above to narrow the dashboard to an incident window.\n\nFor field reference, see the [sample data documentation](https://www.elastic.co/docs/manage-data/ingest/sample-data).\n",
  "description": "Intro and context for the web logs dashboard.",
  "settings": {
    "open_links_in_new_tab": true
  },
  "title": "Web logs overview"
}
Response examples (200)
The complete updated markdown library item state after a full replacement. PUT replaces the entire item, so any fields omitted from the request are reset to their defaults.
{
  "data": {
    "content": "## Web logs overview\n\nA quick reference for the **Kibana sample web logs** dataset (`kibana_sample_data_logs`).\n\n**Key metrics in this dashboard:**\n\n- Total request count by HTTP method\n- Average response size over time\n- Geographic distribution of client IPs\n- _New:_ error rate broken down by status code\n\n> Use the time picker above to narrow the dashboard to an incident window.\n\nFor field reference, see the [sample data documentation](https://www.elastic.co/docs/manage-data/ingest/sample-data).\n",
    "description": "Intro and context for the web logs dashboard.",
    "settings": {
      "open_links_in_new_tab": true
    },
    "title": "Web logs overview"
  },
  "id": "5e1f3a20-c4d6-11ef-be8b-3c7c2b9d1f4e",
  "meta": {
    "created_at": "2026-04-13T10:00:00.000Z",
    "managed": false,
    "updated_at": "2026-04-13T11:00:00.000Z",
    "version": "WzYwLDFd"
  }
}
Response examples (201)
Returned when the upsert created a new item because no item existed with the specified ID.
{
  "data": {
    "content": "## Web logs overview\n\nA quick reference for the **Kibana sample web logs** dataset (`kibana_sample_data_logs`).\n\n**Key metrics in this dashboard:**\n\n- Total request count by HTTP method\n- Average response size over time\n- Geographic distribution of client IPs\n\n> Use the time picker above to narrow the dashboard to an incident window.\n\nFor field reference, see the [sample data documentation](https://www.elastic.co/docs/manage-data/ingest/sample-data).\n",
    "description": "Intro and context for the web logs dashboard.",
    "settings": {
      "open_links_in_new_tab": true
    },
    "title": "Web logs overview"
  },
  "id": "web-logs-overview",
  "meta": {
    "created_at": "2026-04-13T10:00:00.000Z",
    "managed": false,
    "updated_at": "2026-04-13T10:00:00.000Z",
    "version": "WzU5LDFd"
  }
}