---
title: "Update a Knowledge Base"
method: PUT
path: "/v2/gen-ai/knowledge_bases/{uuid}"
tags: ["DigitalOcean-public.v2-new_GradientAI Platform"]
---

# Update a Knowledge Base

`PUT /v2/gen-ai/knowledge_bases/{uuid}`

To update a knowledge base, send a PUT request to `/v2/gen-ai/knowledge_bases/{uuid}`.

## Path parameters

- `uuid` string, required

## Request body

- ApiUpdateKnowledgeBaseInputPublic — Information about updating a knowledge base
  - `database_id` string — The id of the DigitalOcean database this knowledge base will use, optiona.
  - `embedding_model_uuid` string — Identifier for the foundation model.
  - `name` string — Knowledge base name
  - `project_id` string — The id of the DigitalOcean project this knowledge base will belong to
  - `tags` string[] — Tags to organize your knowledge base.
  - `uuid` string — Knowledge base id

## Response `200`

A successful response.

- ApiUpdateKnowledgeBaseOutput — Information about an updated knowledge base
  - `knowledge_base` ApiKnowledgeBase — Knowledgebase Description
    - `added_to_agent_at` string, date-time — Time when the knowledge base was added to the agent
    - `created_at` string, date-time — Creation date / time
    - `database_id` string
    - `embedding_model_uuid` string
    - `is_public` boolean — Whether the knowledge base is public or not
    - `last_indexing_job` ApiIndexingJob — IndexingJob description
      - `completed_datasources` integer — Number of datasources indexed completed
      - `created_at` string, date-time — Creation date / time
      - `data_source_uuids` string[]
      - `finished_at` string, date-time
      - `knowledge_base_uuid` string — Knowledge base id
      - `phase` 'BATCH_JOB_PHASE_UNKNOWN' | 'BATCH_JOB_PHASE_PENDING' | 'BATCH_JOB_PHASE_RUNNING' | 'BATCH_JOB_PHASE_SUCCEEDED' | 'BATCH_JOB_PHASE_FAILED' | 'BATCH_JOB_PHASE_ERROR' | 'BATCH_JOB_PHASE_CANCELLED'
      - `started_at` string, date-time
      - `status` 'INDEX_JOB_STATUS_UNKNOWN' | 'INDEX_JOB_STATUS_PARTIAL' | 'INDEX_JOB_STATUS_IN_PROGRESS' | 'INDEX_JOB_STATUS_COMPLETED' | 'INDEX_JOB_STATUS_FAILED' | 'INDEX_JOB_STATUS_NO_CHANGES' | 'INDEX_JOB_STATUS_PENDING'
      - `tokens` integer — Number of tokens
      - `total_datasources` integer — Number of datasources being indexed
      - `total_items_failed` string, uint64 — Total Items Failed
      - `total_items_indexed` string, uint64 — Total Items Indexed
      - `total_items_skipped` string, uint64 — Total Items Skipped
      - `updated_at` string, date-time — Last modified
      - `uuid` string — Unique id
    - `name` string — Name of knowledge base
    - `project_id` string
    - `region` string — Region code
    - `tags` string[] — Tags to organize related resources
    - `updated_at` string, date-time — Last modified
    - `user_id` string, int64 — Id of user that created the knowledge base
    - `uuid` string — Unique id for knowledge base

## Other responses

- `401` — Authentication failed due to invalid credentials.
- `404` — The resource was not found.
- `429` — The API rate limit has been exceeded.
- `500` — There was a server error.
- `default` — There was an unexpected error.

## Changes

- **2025-10-16** `cb3bf9b21459` — 2 info
  - api tag `DigitalOcean-public.v2-new_GradientAI Platform` added
  - api tag `GradientAI Platform` removed
- **2025-08-04** `9aca3802735e` — 3 info
  - added the optional property `knowledge_base/last_indexing_job/total_items_failed` to the response with the `200` status
  - added the optional property `knowledge_base/last_indexing_job/total_items_indexed` to the response with the `200` status
  - added the optional property `knowledge_base/last_indexing_job/total_items_skipped` to the response with the `200` status
- **2025-07-18** `f8e8c290636c` — 9 info
  - api operation id `update_knowledge_base` removed and replaced with `genai_update_knowledge_base`
  - the endpoint scheme security `bearer_auth` was added to the API
  - api tag `GradientAI Platform` added
  - api tag `GenAIAPI` removed
  - …5 more
- **2025-07-17** `5fc9af728e82` — 1 breaking, 3 warning, 8 info
  - request body became required
  - the optional response header `ratelimit-limit` removed for the status `200`
  - the optional response header `ratelimit-remaining` removed for the status `200`
  - the optional response header `ratelimit-reset` removed for the status `200`
  - …8 more
- …earlier changes not shown

[Full history](https://skmtc.dev/digitalocean/apis/digitalocean-api/changes/v2/gen-ai/knowledge_bases/:uuid/put.md)

---

[API](https://skmtc.dev/digitalocean/apis/digitalocean-api.md) · [All operations](https://skmtc.dev/digitalocean/apis/digitalocean-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/digitalocean/digitalocean-api/revisions/cb3bf9b21459/schema)
