---
title: "POST /v1/create-corpus"
method: POST
path: "/v1/create-corpus"
tags: ["AdminService"]
---

# POST /v1/create-corpus

`POST /v1/create-corpus`

Creates a corpus, which is a container to store data in.

Some tips for this API:
* This operation works with the Personal API Key and OAuth 2.0 (in a JWT "Bearer Token") authentication. You can find details of how to set up and use OAuth 2.0 [here](https://docs.vectara.com/docs/deploy-and-scale/authentication/oauth-2).
* The `name` of the corpus is the only required field.
* Filter attributes tell Vectara which metadata fields you'd like to run SQL-style filters against.  If you need to change them after you've created the corpus, see the [Replace Filter Attributes API](https://docs.vectara.com/docs/rest-api/replace-corpus-filter-attrs)
* `textless` and `customDimensions` are features that are only available to [Scale](https://vectara.com/pricing/) accounts.

## Headers

- `customer-id` integer, required
- `timeout` string

## Request body

- AdminCreateCorpusRequest
  - `corpus` AdminCorpus
    - `id` integer — The Corpus ID. This value is ignored during Corpus creation.
    - `name` string — The name of the corpus.
    - `description` string — A description for the corpus.
    - `dtProvision` string, int64 — The time at which the corpus was provisioned. This value is ignored during Corpus creation.
    - `enabled` boolean — Whether the corpus is enabled for use or not. This value is ignored during Corpus creation.
    - `swapQenc` boolean
    - `swapIenc` boolean — The default query encoder is designed for normal question-answering types of queries when the text contains the answer. Swapping the index encoder is generally rare, but can be used to help directly match questions to questions. This can be useful if you have a FAQ dataset and you want to directly match the user question to the question in the FAQ.
    - `textless` boolean — When a corpus is "textless", Vectara does not store the original text. Instead, Vectara converts the text to vectors and only retains metadata.
    - `encrypted` boolean — Encryption is on by default and cannot be turned off.
    - `encoderId` string, uint64 — This is an advanced setting for changing the underlying model type. The default value is "1", which is Vectara's high-performing global model. Underlying models may be swapped for some paying customers by contacting our support team.
    - `metadataMaxBytes` integer — An optional maximum size of the metadata that each document can contain.
    - `customDimensions` AdminDimension[]
      - `name` string — The name of the custom dimension. The maximum length of the name is 8 characters.
      - `description` string — A description for the custom dimension.
      - `servingDefault` number, double — The default weight to give this dimension when running queries. A value of 0.0, for example, gives it no weight at all.
      - `indexingDefault` number, double — The default value to give to documents for this custom dimension.
    - `filterAttributes` AdminFilterAttribute[]
      - `name` string — Name of the field, as seen in metadata.
      - `description` string — An optional description.
      - `indexed` boolean — Whether the field is indexed for maximum query speed.
      - `type` 'FILTER_ATTRIBUTE_TYPE__UNDEFINED' | 'FILTER_ATTRIBUTE_TYPE__INTEGER' | 'FILTER_ATTRIBUTE_TYPE__INTEGER_LIST' | 'FILTER_ATTRIBUTE_TYPE__REAL' | 'FILTER_ATTRIBUTE_TYPE__REAL_LIST' | 'FILTER_ATTRIBUTE_TYPE__TEXT' | 'FILTER_ATTRIBUTE_TYPE__TEXT_LIST' | 'FILTER_ATTRIBUTE_TYPE__BOOLEAN'
      - `level` 'FILTER_ATTRIBUTE_LEVEL__UNDEFINED' | 'FILTER_ATTRIBUTE_LEVEL__DOCUMENT' | 'FILTER_ATTRIBUTE_LEVEL__DOCUMENT_PART'

## Response `200`

A successful response.

- AdminCreateCorpusResponse
  - `corpusId` integer — The Corpus ID that was created.
  - `status` ComvectaraStatus
    - `code` 'OK' | 'FAILURE' | 'UNKNOWN' | 'INVALID_ARGUMENT' | 'DEADLINE_EXCEEDED' | 'ALREADY_EXISTS' | 'PERMISSION_DENIED' | 'RESOURCE_EXHAUSTED' | 'FAILED_PRECONDITION' | 'ABORTED' | 'OUT_OF_RANGE' | 'UNIMPLEMENTED' | 'INTERNAL' | 'UNAVAILABLE' | 'DATA_LOSS' | 'UNAUTHENTICATED' | 'BAD_REQUEST' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'METHOD_NOT_ALLOWED' | 'CONFLICT' | 'UNSUPPORTED_MEDIA_TYPE' | 'TOO_MANY_REQUESTS' | 'INTERNAL_SERVER_ERROR' | 'NOT_IMPLEMENTED' | 'SERVICE_UNAVAILABLE' | 'INSUFFICIENT_STORAGE' | 'UNPARSEABLE_RESPONSE' | 'DISABLED_CUSTOMER' | 'INVALID_CUSTOMER_ID' | 'DISABLED_CORPUS' | 'INVALID_CORPUS_ID' | 'DISABLED_API_KEY' | 'EXPIRED_API_KEY' | 'INVALID_API_KEY' | 'CMK_INACCESSIBLE' | 'QRY__DISABLED_CORPUS' | 'QRY__DOCUMENT_DB_FAILURE' | 'QRY__ENCODER_FAILURE' | 'QRY__INTERRUPTED' | 'QRY__INVALID_CORPUS' | 'QRY__INVALID_START' | 'QRY__INVALID_NUM_RESULTS' | 'QRY__INVALID_CONTEXT' | 'QRY__MISSING_QUERY' | 'QRY__MISSING_CORPUS' | 'QRY__TIMEOUT' | 'QRY__TOO_MANY_CORPORA' | 'QRY__TOO_MANY_QUERIES' | 'QRY__VECTOR_INDEX_FAILURE' | 'QRY__INVALID_DIMENSION' | 'QRY__INVALID_CLIENTKEY' | 'QRY__DECRYPTION_FAILURE' | 'QRY__INVALID_RERANKER' | 'QRY__PARTIAL_RERANK' | 'QRY__RERANK_FAILURE' | 'QRY__TOO_MANY_RESULT_ROWS' | 'QRY__PARTIAL_RETRIEVAL' | 'QRY__SMRY__INVALID_SUMMARIZER_PROMPT' | 'QRY__SMRY__INVALID_SUMMARY_LANG' | 'QRY__SMRY__UNSUPPORTED_SUMMARY_LANG' | 'QRY__SMRY__PARTIAL_SUMMARY' | 'QRY__SMRY__NO_QUERY_RESULTS' | 'QRY__SMRY__EVAL_UNSUPPORTED_LANG' | 'QRY__SMRY__EVAL_FAILURE' | 'QRY__GEN__NO_QUERY_RESULTS' | 'QRY__GEN__UNPARSEABLE_MODEL_PARAMS' | 'CX_SPECS__INVALID_JSON' | 'CX_SPECS__UNREGISTERED_TYPE' | 'CX_SPECS__MISSING_SPEC' | 'CX_SPECS__MISSING_TYPE' | 'CX_SPECS__UNPARSEABLE_SPEC' | 'ADM__INVALID_CUSTOMER_ID' | 'ADM__INVALID_CORPUS_ID' | 'ADM__INVALID_ENCODER_ID' | 'ADM__INVALID_ROLE_ID' | 'ADM__ROLE_ALREADY_EXISTS' | 'ADM__ONLY_ONE_OWNER_SUPPORTED' | 'ADM__INVALID_PERMISSION' | 'ADM__ROLECREATION_FAILURE' | 'ADM__USER_EMAIL_NOT_AVAIALBLE' | 'ADM__USERNAME_NOT_AVAILABLE' | 'ADM__SIGNUP_MISSING_NAME' | 'ADM__SIGNUP_MISSING_ORG' | 'ADM__SIGNUP_MISSING_EMAIL' | 'ADM__SIGNUP_MISSING_PAYMENT' | 'ADM__SIGNUP_MISSING_PLAN' | 'ADM__SIGNUP_MISSING_PASSWORD' | 'ADM__SIGNUP_INVALID_NAME' | 'ADM__SIGNUP_INVALID_ORG' | 'ADM__SIGNUP_INVALID_EMAIL' | 'ADM__SIGNUP_INVALID_PAYMENT' | 'ADM__SIGNUP_INVALID_PLAN' | 'ADM__SIGNUP_INVALID_PASSWORD' | 'ADM__SIGNUP_INVALID_ACCOUNT_ALIAS' | 'ADM__SIGNUP_INVALID_EMAIL_VALIDATION_CODE' | 'ADM__SIGNUP_MISSING_COUNTRY_CODE' | 'ADM__SIGNUP_ROOT_EMAIL_NOT_AVAILABLE' | 'ADM__CUST_MARK_DELETE_FAILED' | 'ADM__CUST_FAISS_DEALLOC_FAILED' | 'ADM__CUST_ALREADY_ACTIVE' | 'ADM__CUST_REACTIVATE_FAILED' | 'ADM__CUST_ENABLEMENT_FAILED' | 'ADM__CORPUS_LIMIT_REACHED' | 'ADM__STRIPE_CARD_DECLINED' | 'ADM__STRIPE_PROCESSING_ERROR' | 'ADM__EMAIL_VALIDATION_REQUEST_NOT_FOUND' | 'ADM__EMAIL_NOT_VALIDATED' | 'ADM__CHANGE_PLAN__NO_CURRENT_PLAN' | 'ADM__CHANGE_PLAN__REQUIRES_MANUAL_CHANGE' | 'ADM__CHANGE_PLAN__INVALID_PLAN_ID' | 'ADM__CHANGE_PLAN__NO_PAYMENT_SOURCE' | 'ADM__CHANGE_PLAN__INVALID_EFFECTIVE_DATE' | 'ADM__CHANGE_PLAN__CONFLICTING_CHANGE' | 'SCM__MISCONFIGURED_CONNECTION' | 'STATS_DB_READ_FAILURE' | 'VDB__TEXT_READ_FAILURE' | 'REBUILD__LOW_RECALL' | 'REBUILD__INDEX_UPLOAD_FAILURE' | 'REBUILD__UPDATE_JOURNAL_FAILURE' | 'REBUILD__UPDATE_FAISSPARAMS_FAILURE' | 'REBUILD__NO_DATA' | 'REBUILD__EVALUATION' | 'IDX__TRANSIENT_PARTIAL_DELETION_FAILURE' | 'IDX__PERMANENT_PARTIAL_DELETION_FAILURE' | 'CALB__INVALID_JSON' | 'CALB__INVALID_SPEC' | 'CALB__UNREGISTERED_TYPE' | 'CALB__MISSING_SPEC' | 'CALB__MISSING_TYPE' | 'CALB__UNPARSABLE_SPEC'
    - `statusDetail` string

## Other responses

- `default` — An unexpected error response.

---

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