curl --request POST \
--url https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"tokens": [
"_act-sbx-jwt-eyJhbGciOiJub25lIn0...",
"_act-sbx-jwt-eyKhbGciOiJub25lIn0..."
]
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
tokens: ['_act-sbx-jwt-eyJhbGciOiJub25lIn0...', '_act-sbx-jwt-eyKhbGciOiJub25lIn0...']
})
};
fetch('https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens"
payload = { "tokens": ["_act-sbx-jwt-eyJhbGciOiJub25lIn0...", "_act-sbx-jwt-eyKhbGciOiJub25lIn0..."] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens"
payload := strings.NewReader("{\n \"tokens\": [\n \"_act-sbx-jwt-eyJhbGciOiJub25lIn0...\",\n \"_act-sbx-jwt-eyKhbGciOiJub25lIn0...\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"total": 2,
"succeeded": 1,
"failed": 1,
"results": [
{
"name": "Sarah Williams (from Sumsub)",
"success": true,
"customer_id": "abc123",
"application_id": "def456"
},
{
"name": "Unknown",
"success": false,
"error": "Share token expired"
}
]
}{
"type": "https://api.platform.dakota.xyz/problems/invalid-request",
"title": "Invalid Request",
"status": 400,
"detail": "Request body must contain at least one item",
"instance": "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://api.platform.dakota.xyz/problems/unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Bulk import customers from Sumsub share tokens
Processes multiple Sumsub share tokens in a single request. For each token, the system redeems it with Sumsub, extracts the applicant’s name and identity data, creates a customer and individual application, and imports documents. Customer names are derived automatically from Sumsub data.
The import does not submit the application. Emits customer.application.imported
once for each token that imports, after its documents: status is ready when the
application can be submitted, or incomplete with missing listing what it still
needs (the same validation GET /applications/{application_id}?include=validation
returns; an item with required: false, such as an optional proof of address, does
not block submission). A token that fails to import sends nothing.
curl --request POST \
--url https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"tokens": [
"_act-sbx-jwt-eyJhbGciOiJub25lIn0...",
"_act-sbx-jwt-eyKhbGciOiJub25lIn0..."
]
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
tokens: ['_act-sbx-jwt-eyJhbGciOiJub25lIn0...', '_act-sbx-jwt-eyKhbGciOiJub25lIn0...']
})
};
fetch('https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens"
payload = { "tokens": ["_act-sbx-jwt-eyJhbGciOiJub25lIn0...", "_act-sbx-jwt-eyKhbGciOiJub25lIn0..."] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens"
payload := strings.NewReader("{\n \"tokens\": [\n \"_act-sbx-jwt-eyJhbGciOiJub25lIn0...\",\n \"_act-sbx-jwt-eyKhbGciOiJub25lIn0...\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"total": 2,
"succeeded": 1,
"failed": 1,
"results": [
{
"name": "Sarah Williams (from Sumsub)",
"success": true,
"customer_id": "abc123",
"application_id": "def456"
},
{
"name": "Unknown",
"success": false,
"error": "Share token expired"
}
]
}{
"type": "https://api.platform.dakota.xyz/problems/invalid-request",
"title": "Invalid Request",
"status": 400,
"detail": "Request body must contain at least one item",
"instance": "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://api.platform.dakota.xyz/problems/unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/customers/bulk-import-sumsub-tokens",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Authorizations
Headers
Unique key (UUID) to ensure request idempotency on POST, PUT and PATCH requests.
A key is scoped to your client, the HTTP method and the path, and is remembered for 24 hours after a
successful (below 400) response. Repeating the same request (same JSON body, whatever the key order or
whitespace) with the same key within that window returns the original response with
X-Idempotent-Replayed: true instead of executing the request again. Using the same key on the same
endpoint with a different body returns 422 with problem type idempotency-key-reused; the request is
not executed. Error responses (4xx and 5xx) are not remembered, so a request refused for a fixable reason
can be corrected and retried under the same key. Request bodies that are not JSON (for example file
uploads) are not compared.
Body
List of Sumsub share tokens to import
1 - 100 elementsWas this page helpful?

