# Maintaining Datasets via API
> Authentication and invocation methods are consistent with the application Service API. The difference is that a single dataset API token can operate on all datasets.
### Advantages of Using Dataset API
* Synchronize your data system with Dify datasets to create powerful workflows.
* Provide dataset list, document list, and detail queries to facilitate building your own data management page.
* Support both plain text and file uploads and updates for documents, and support batch addition and modification at the segment level to streamline your synchronization process.
* Reduce the time spent on manual document processing and synchronization, enhancing your visibility into Dify's software and services.
### How to Use
Navigate to the dataset page, and you can switch to the **API** page from the left navigation. On this page, you can view the dataset API documentation provided by Dify and manage the credentials for accessing the dataset API in **API Keys**.
Knowledge API Document
### API Call Examples
#### **Create an Empty Dataset**
{% hint style="warning" %}
Only used to create an empty dataset
{% endhint %}
```
curl --location --request POST 'https://api.dify.ai/v1/datasets' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "name"}'
```
#### **Dataset List**
```
curl --location --request GET 'https://api.dify.ai/v1/datasets?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'
```
#### **Create Document by Text**
```
curl --location --request POST 'https://api.dify.ai/v1/datasets//document/create_by_text' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Dify",
"text": "Dify means Do it for you...",
"indexing_technique": "high_quality",
"process_rule": {
"rules": {
"pre_processing_rules": [{
"id": "remove_extra_spaces",
"enabled": true
}, {
"id": "remove_urls_emails",
"enabled": true
}],
"segmentation": {
"separator": "###",
"max_tokens": 500
}
},
"mode": "custom"
}
}'
```
#### **Create Document by File**
```
curl --location POST 'https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_file' \
--header 'Authorization: Bearer {api_key}' \
--form 'data="{
"name": "Dify",
"indexing_technique": "high_quality",
"process_rule": {
"rules": {
"pre_processing_rules": [{
"id": "remove_extra_spaces",
"enabled": true
}, {
"id": "remove_urls_emails",
"enabled": true
}],
"segmentation": {
"separator": "###",
"max_tokens": 500
}
},
"mode": "custom"
}
}";
type=text/plain' \
--form 'file=@"/path/to/file"'
```
#### **Get Document Embedding Status (Progress)**
```
curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{batch}/indexing-status' \
--header 'Authorization: Bearer {api_key}'
```
#### **Delete Document**
```
curl --location --request DELETE 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}' \
--header 'Authorization: Bearer {api_key}'
```
#### **Dataset Document List**
```
curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents' \
--header 'Authorization: Bearer {api_key}'
```
#### **Add Segments**
```
curl 'https://api.dify.ai/v1/datasets/aac47674-31a8-4f12-aab2-9603964c4789/documents/2034e0c1-1b75-4532-849e-24e72666595b/segment' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw $'"chunks":[
{"content":"Dify means Do it for you",
"keywords":["Dify","Do"]
}
]'
--compressed
```
### Error Messages
* `document_indexing`: Document indexing failed
* `provider_not_initialize`: Embedding model not configured
* `not_found`: Document not found
* `dataset_name_duplicate`: Dataset name duplicate
* `provider_quota_exceeded`: Model quota exceeded
* `dataset_not_initialized`: Dataset not initialized
* `unsupported_file_type`: Unsupported file type
* Currently supported: txt, markdown, md, pdf, html, htm, xlsx, docx, csv
* `too_many_files`: Too many files, currently only single file uploads are supported
* `file_too_large`: File too large, supports files under 15MB