

# StartContentUpload


Get a URL to upload content to a knowledge base. To upload content, first make a PUT request to the returned URL with your file, making sure to include the required headers. Then use [CreateContent](https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_CreateContent.html) to finalize the content creation process or [UpdateContent](https://docs.aws.amazon.com/amazon-q-connect/latest/APIReference/API_UpdateContent.html) to modify an existing resource. You can only upload content to a knowledge base of type CUSTOM.

## Request Syntax


```
POST /knowledgeBases/knowledgeBaseId/upload HTTP/1.1
Content-type: application/json

{
   "contentType": "string",
   "presignedUrlTimeToLive": number
}
```

## URI Request Parameters


The request uses the following URI parameters.

 ** [knowledgeBaseId](#API_amazon-q-connect_StartContentUpload_RequestSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-request-uri-knowledgeBaseId"></a>
The identifier of the knowledge base. Can be either the ID or the ARN. URLs cannot contain the ARN.  
Pattern: `[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}`   
Required: Yes

## Request Body


The request accepts the following data in JSON format.

 ** [contentType](#API_amazon-q-connect_StartContentUpload_RequestSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-request-contentType"></a>
The type of content to upload.  
Type: String  
Pattern: `(text/(plain|html|csv))|(application/(pdf|vnd\.openxmlformats-officedocument\.wordprocessingml\.document))|(application/x\.wisdom-json;source=(salesforce|servicenow|zendesk))`   
Required: Yes

 ** [presignedUrlTimeToLive](#API_amazon-q-connect_StartContentUpload_RequestSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-request-presignedUrlTimeToLive"></a>
The expected expiration time of the generated presigned URL, specified in minutes.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 60.  
Required: No

## Response Syntax


```
HTTP/1.1 200
Content-type: application/json

{
   "headersToInclude": { 
      "string" : "string" 
   },
   "uploadId": "string",
   "url": "string",
   "urlExpiry": number
}
```

## Response Elements


If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [headersToInclude](#API_amazon-q-connect_StartContentUpload_ResponseSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-response-headersToInclude"></a>
The headers to include in the upload.  
Type: String to string map  
Key Length Constraints: Minimum length of 1. Maximum length of 4096.  
Value Length Constraints: Minimum length of 1. Maximum length of 4096.

 ** [uploadId](#API_amazon-q-connect_StartContentUpload_ResponseSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-response-uploadId"></a>
The identifier of the upload.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1200.

 ** [url](#API_amazon-q-connect_StartContentUpload_ResponseSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-response-url"></a>
The URL of the upload.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 4096.

 ** [urlExpiry](#API_amazon-q-connect_StartContentUpload_ResponseSyntax) **   <a name="connect-amazon-q-connect_StartContentUpload-response-urlExpiry"></a>
The expiration time of the URL as an epoch timestamp.  
Type: Timestamp

## Errors


For information about the errors that are common to all actions, see [Common Errors](CommonErrors.md).

 ** AccessDeniedException **   
You do not have sufficient access to perform this action.  
HTTP Status Code: 403

 ** ResourceNotFoundException **   
The specified resource does not exist.    
 ** resourceName **   
The specified resource name.
HTTP Status Code: 404

 ** UnauthorizedException **   
You do not have permission to perform this action.  
HTTP Status Code: 401

 ** ValidationException **   
The input fails to satisfy the constraints specified by a service.  
HTTP Status Code: 400

## See Also


For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/qconnect-2020-10-19/StartContentUpload) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/qconnect-2020-10-19/StartContentUpload) 