Skip to content

Knowledge bases

Create document upload

Create a resumable upload session and receive direct PUT or multipart transfer instructions. OAuth scope: `api:write`.

POST/api/v2/knowledge/{knowledgeBaseId}/documents/uploads

Create a resumable upload session and receive direct PUT or multipart transfer instructions.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

knowledgeBaseIdstringRequired

Unique knowledge base identifier.

minLength
1

Request body

Required

Document metadata used to authorize and initialize the upload.

object

Document metadata used to authorize and initialize the upload.

12 fields
workspaceIdstringRequired

Workspace that owns the knowledge base.

minLength
1
maxLength
128
namestringRequired

Filename recorded on the knowledge document.

minLength
1
maxLength
255
contentTypestringRequired

Supported MIME type for the document.

minLength
1
maxLength
255
sizeintegerRequired

Exact file size in bytes.

minimum
1
maximum
104857600
tag1string

Value for tag slot 1.

maxLength
1000
tag2string

Value for tag slot 2.

maxLength
1000
tag3string

Value for tag slot 3.

maxLength
1000
tag4string

Value for tag slot 4.

maxLength
1000
tag5string

Value for tag slot 5.

maxLength
1000
tag6string

Value for tag slot 6.

maxLength
1000
tag7string

Value for tag slot 7.

maxLength
1000
processingOptionsobject

Optional processing recipe and language.

2 fields
recipestring

Optional document processing recipe. One of: default, plain, markdown, code.

enum
["default","plain","markdown","code"]
langstring

Optional document language: hyphen-separated letter and digit subtags such as en, en-US, or zh-Hant-TW. Only that shape is validated, not full BCP-47 conformance.

maxLength
35
pattern
^[A-Za-z]{2,8}(?:-[A-Za-z0-9]{1,8})*$

Additional properties are not allowed.

Additional properties are not allowed.

Request example 1

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "name": "getting-started.pdf",
  "contentType": "application/pdf",
  "size": 248913
}

Responses

201

The created upload session and transfer instructions.

object

Upload session, signed control token, and transfer instructions.

1 field
dataobjectRequired

Response data.

3 fields
sessionobjectRequired

State of a resumable knowledge-document upload session.

9 fields
idstringRequired

Upload session identifier.

knowledgeBaseIdstringRequired

Knowledge base that will own the document.

statusstringRequired

Current upload-session state.

enum
["uploading","completing","finalizing","completed","failed","aborting","aborted","expired"]
namestringRequired

Filename recorded on the knowledge document.

contentTypestringRequired

MIME type declared for the document.

sizeintegerRequired

Exact file size in bytes.

maximum
9007199254740991
exclusiveMinimum
0
expiresAtstringRequired

ISO 8601 upload-session expiration time.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
errorvalueRequired

Terminal upload error, or null when none occurred.

Schema details

Any of

Option 1string
Option 2null
documentvalueRequired

Queued document after completion, or null before completion.

Schema details

Any of

Option 1object

Summary returned by document lists and upload acknowledgements.

11 fields
idstringRequired

Unique document identifier.

knowledgeBaseIdstringRequired

Knowledge base to which the document belongs.

filenamestringRequired

Original filename of the uploaded document.

fileSizenumberRequired

File size in bytes.

mimeTypestringRequired

MIME type of the document file.

processingStatusstringRequired

Current document processing state.

enum
["pending","processing","completed","failed"]
chunkCountnumberRequired

Number of indexed chunks; zero until processing completes.

tokenCountnumberRequired

Total tokens extracted from the document.

characterCountnumberRequired

Total characters extracted from the document.

enabledbooleanRequired

Whether the document is enabled for search.

createdAtvalueRequired

ISO 8601 timestamp when the document was uploaded, or null.

format
date-time
Schema details

Any of

Option 1string
Option 2null

Additional properties are not allowed.

Option 2null

Additional properties are not allowed.

uploadTokenstringRequired

Signed control token required by subsequent upload-session requests.

minLength
1
transferV2KnowledgeUploadTransferRequired

Provider transfer strategy for a knowledge document upload.

Schema details

Exactly one of

Option 1object

Instructions for uploading bytes to one signed URL.

4 fields
methodstringRequired

Upload strategy discriminator.

const
put
urlstringRequired

Signed URL to which the file bytes are uploaded. Upload bytes with PUT and exactly the supplied headers; never construct or modify the signed URL. Treat any 2xx as success. Sim-hosted URLs return an empty 204 and v2 JSON errors. Object-storage URLs may return 200 or 201 and provider-specific errors, often XML.

format
uri
headersobjectRequired

Headers that must be included with the upload request.

Schema details
Additional propertiesstring
expiresAtstringRequired

ISO 8601 expiration time for this signed URL. This is the URL's own expiry and is normally earlier than the upload session's expiresAt: the session stays open for later part, status, completion, and abort requests, but the bytes must be uploaded before this time. Once it passes, the storage provider rejects the upload and a new upload session must be created.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$

Additional properties are not allowed.

Option 2object

Instructions for splitting bytes into a multipart upload.

3 fields
methodstringRequired

Upload strategy discriminator.

const
multipart
partSizeintegerRequired

Required size of each non-final part in bytes.

maximum
9007199254740991
exclusiveMinimum
0
partCountintegerRequired

Total number of upload parts.

maximum
640
exclusiveMinimum
0

Additional properties are not allowed.

Additional properties are not allowed.

Additional properties are not allowed.

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit