---
title: "Create a Knowledge Base"
method: POST
path: "/v2/gen-ai/knowledge_bases"
tags: ["DigitalOcean-public.v2-new_GradientAI Platform"]
---

# Create a Knowledge Base

`POST /v2/gen-ai/knowledge_bases`

To create a knowledge base, send a POST request to `/v2/gen-ai/knowledge_bases`.

## Request body

- ApiCreateKnowledgeBaseInputPublic — Data to create a new knowledge base.
  - `database_id` string — Identifier of the DigitalOcean OpenSearch database this knowledge base will use, optional. If not provided, we create a new database for the knowledge base in the same region as the knowledge base.
  - `datasources` ApiKBDataSource[] — The data sources to use for this knowledge base. See [Organize Data Sources](https://docs.digitalocean.com/products/genai-platform/concepts/best-practices/#spaces-buckets) for more information on data sources best practices.
    - `aws_data_source` ApiAWSDataSource — AWS S3 Data Source
      - `bucket_name` string — Spaces bucket name
      - `item_path` string
      - `key_id` string — The AWS Key ID
      - `region` string — Region of bucket
      - `secret_key` string — The AWS Secret Key
    - `bucket_name` string — Deprecated, moved to data_source_details
    - `bucket_region` string — Deprecated, moved to data_source_details
    - `dropbox_data_source` ApiDropboxDataSource — Dropbox Data Source
      - `folder` string
      - `refresh_token` string — Refresh token. you can obrain a refresh token by following the oauth2 flow. see /v2/gen-ai/oauth2/dropbox/tokens for reference.
    - `file_upload_data_source` ApiFileUploadDataSource — File to upload as data source for knowledge base.
      - `original_file_name` string — The original file name
      - `size_in_bytes` string, uint64 — The size of the file in bytes
      - `stored_object_key` string — The object key the file was stored as
    - `item_path` string
    - `spaces_data_source` ApiSpacesDataSource — Spaces Bucket Data Source
      - `bucket_name` string — Spaces bucket name
      - `item_path` string
      - `region` string — Region of bucket
    - `web_crawler_data_source` ApiWebCrawlerDataSource — WebCrawlerDataSource
      - `base_url` string — The base url to crawl.
      - `crawling_option` 'UNKNOWN' | 'SCOPED' | 'PATH' | 'DOMAIN' | 'SUBDOMAINS' — Options for specifying how URLs found on pages should be handled. - UNKNOWN: Default unknown value - SCOPED: Only include the base URL. - PATH: Crawl the base URL and linked pages within the URL path. - DOMAIN: Crawl the base URL and linked pages within the same domain. - SUBDOMAINS: Crawl the base URL and linked pages for any subdomain.
      - `embed_media` boolean — Whether to ingest and index media (images, etc.) on web pages.
  - `embedding_model_uuid` string — Identifier for the [embedding model](https://docs.digitalocean.com/products/genai-platform/details/models/#embedding-models).
  - `name` string — Name of the knowledge base.
  - `project_id` string — Identifier of the DigitalOcean project this knowledge base will belong to.
  - `region` string — The datacenter region to deploy the knowledge base in.
  - `tags` string[] — Tags to organize your knowledge base.
  - `vpc_uuid` string — The VPC to deploy the knowledge base database in

## Response `200`

A successful response.

- ApiCreateKnowledgeBaseOutput — Information about a newly created 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.

---

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