Complete knowledge base import upload

Verify the uploaded bundle and start creating the knowledge base under the same import ID. Vectors are reused when the bundle was embedded with this deployment's model; otherwise documents are re-indexed. Completion records an audit event. Repeating it returns the running import.

OAuth scope: api:write.

POST/api/v2/knowledge/imports/{importId}/complete
X-API-Key<token>

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.

In: header

Request examples use an API key. For OAuth, replace the X-API-Key header with Authorization: Bearer YOUR_ACCESS_TOKEN.

curl -X POST "https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string" \  -H "X-API-Key: YOUR_API_KEY" \  -H "upload-token: string"
fetch("https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string", {  method: "POST",  headers: {    "X-API-Key": "YOUR_API_KEY",    "upload-token": "string"  }})
package mainimport (  "fmt"  "net/http"  "io/ioutil")func main() {  url := "https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string"  req, _ := http.NewRequest("POST", url, nil)  req.Header.Add("X-API-Key", "YOUR_API_KEY")  req.Header.Add("upload-token", "string")  res, _ := http.DefaultClient.Do(req)  defer res.Body.Close()  body, _ := ioutil.ReadAll(res.Body)  fmt.Println(res)  fmt.Println(string(body))}
import requestsurl = "https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string"response = requests.request("POST", url, headers = {  "X-API-Key": "YOUR_API_KEY",   "upload-token": "string"})print(response.text)
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;HttpClient client = HttpClient.newBuilder()  .connectTimeout(Duration.ofSeconds(10))  .build();HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()  .uri(URI.create("https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string"))  .header("X-API-Key", "YOUR_API_KEY")  .header("upload-token", "string")  .POST()  .build();try {  HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());  System.out.println("Status code: " + response.statusCode());  System.out.println("Response body: " + response.body());} catch (Exception e) {  e.printStackTrace();}
using System;using System.Net.Http;using System.Text;var client = new HttpClient();client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");client.DefaultRequestHeaders.Add("upload-token", "string");var response = await client.PostAsync("https://www.sim.ai/api/v2/knowledge/imports/string/complete?workspaceId=string");var responseBody = await response.Content.ReadAsStringAsync();
{
  "data": {
    "id": "string",
    "workspaceId": "string",
    "status": "uploading",
    "knowledgeBaseId": "string",
    "documentsTotal": 0,
    "documentsImported": 0,
    "documentsFailed": 0,
    "vectorsReused": true,
    "failures": [
      {
        "filename": "string",
        "message": "string"
      }
    ],
    "error": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "completedAt": "2019-08-24T14:15:22Z"
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "USAGE_LIMIT_EXCEEDED",
    "message": "Usage limit exceeded. Please upgrade your plan to continue."
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "CONFLICT",
    "message": "The request conflicts with current knowledge resource state"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}

Path parameters

importId*string

Unique knowledge-base import identifier.

Length1 <= length

Query parameters

workspaceId*string

Workspace that owns the import.

Length1 <= length <= 128

Header parameters

upload-token*string

Signed upload control token returned when the upload session was created.

Length1 <= length

Response body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json