For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Sample appsIntegrationsDiscordPlaygroundDevEx repo
GuidesSDK ReferenceAPI Reference
GuidesSDK ReferenceAPI Reference
  • TwelveLabs API
    • Introduction
    • Authentication
  • API Reference
    • Manage indexes
    • Upload content
      • Direct uploads
      • Multipart uploads
        • POSTCreate a multipart upload session
        • GETRetrieve the status of an upload session
        • GETList incomplete uploads
        • POSTReport uploaded chunks
        • POSTRequest presigned URLs for the remaining chunks
      • Video indexing tasks
    • Index content
    • Manage videos
    • Manage entities
    • Any-to-video search
    • Create embeddings v2
    • Create embeddings v1
    • Analyze and segment videos
    • Error codes
LogoLogo
Sample appsIntegrationsDiscordPlaygroundDevEx repo
API ReferenceUpload contentMultipart uploads

Request presigned URLs for the remaining chunks

POST
https://api.twelvelabs.io/v1.3/assets/multipart-uploads/:upload_id/presigned-urls
POST
/v1.3/assets/multipart-uploads/:upload_id/presigned-urls
$curl -X POST https://api.twelvelabs.io/v1.3/assets/multipart-uploads/507f1f77bcf86cd799439011/presigned-urls \
> -H "x-api-key: <apiKey>" \
> -H "Content-Type: application/json" \
> -d '{
> "start": 1,
> "count": 10
>}'
1{
2 "upload_id": "507f1f77bcf86cd799439011",
3 "start_index": 1,
4 "count": 10,
5 "upload_urls": [
6 {
7 "chunk_index": 1,
8 "url": "https://s3.amazonaws.com/bucket/key?signature=...",
9 "expires_at": "2025-12-01T18:00:00Z"
10 }
11 ],
12 "generated_at": "2025-12-01T11:30:00Z",
13 "expires_at": "2025-12-01T18:00:00Z"
14}
This method generates new presigned URLs for specific chunks that require uploading. Use this endpoint in the following situations: - Your initial URLs have expired (URLs expire after one hour). - The initial set of presigned URLs does not include URLs for all chunks. - You need to retry failed chunk uploads with new URLs. To specify which chunks need URLs, use the `start` and `count` parameters. For example, to generate URLs for chunks 21 to 30, use `start=21` and `count=10`. The response will provide new URLs, each with a fresh expiration time of one hour.
Was this page helpful?
Previous

Video indexing tasks

Next
Built with

This method generates new presigned URLs for specific chunks that require uploading. Use this endpoint in the following situations:

  • Your initial URLs have expired (URLs expire after one hour).
  • The initial set of presigned URLs does not include URLs for all chunks.
  • You need to retry failed chunk uploads with new URLs. To specify which chunks need URLs, use the start and count parameters. For example, to generate URLs for chunks 21 to 30, use start=21 and count=10. The response will provide new URLs, each with a fresh expiration time of one hour.

Authentication

x-api-keystring
Your API key. <Note title="Note"> You can find your API key on the <a href="https://playground.twelvelabs.io/dashboard/api-keys" target="_blank">API Keys</a> page. </Note>

Path parameters

upload_idstringRequired
The unique identifier of the upload session.

Request

This endpoint expects an object.
startintegerRequired>=1
The index of the first chunk number to generate URLs for. Chunks are numbered from 1.
countintegerRequired1-50
The number of presigned URLs to generate starting from the index. You can request a maximum of 50 URLs in a single API call.

Response

Additional presigned URLs have been successfully generated.
upload_idstring
The unique identifier of the upload session associated with these URLs.
start_indexinteger
The index of the first chunk number in this set of URLs. Matches the start value from your request.
countinteger
The number of new URLs created. Matches the count value from your request.
upload_urlslist of objects
An array of additional presigned URLs for uploading chunks.
generated_atstringformat: "date-time"

The date and time, in the RFC 3339 format (“YYYY-MM-DDTHH:mm:ssZ”), when these URLs were created. URLs remain valid for 1 hour from this time.

expires_atstringformat: "date-time"

A string representing the date and time, in RFC 3339 format (“YYYY-MM-DDTHH:mm:ssZ”), when the resource will expire.

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error
500
Internal Server Error

Your API key.

Note

You can find your API key on the API Keys page.