curl --request PUT \
--url https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import \
--header 'Content-Type: application/json' \
--header 'X-DOMO-Developer-Token: <api-key>' \
--data '
[
{
"id": "a8428d64-a01d-49b2-9144-ddeec001acf8",
"datastoreId": "39b88a97-8247-4c0d-ba1d-8ed78d1a6680",
"collectionId": "232e6d6c-46e9-49b6-a137-8933f0f05999",
"syncRequired": true,
"owner": "870010733",
"createdBy": "870010733",
"createdOn": "2026-06-23T20:58:06.567Z",
"updatedOn": "2026-06-23T23:36:13.177Z",
"updatedBy": "870010733",
"content": {
"username": "bill",
"email": "bill@example.com"
}
}
]
'import requests
url = "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import"
payload = [
{
"id": "a8428d64-a01d-49b2-9144-ddeec001acf8",
"datastoreId": "39b88a97-8247-4c0d-ba1d-8ed78d1a6680",
"collectionId": "232e6d6c-46e9-49b6-a137-8933f0f05999",
"syncRequired": True,
"owner": "870010733",
"createdBy": "870010733",
"createdOn": "2026-06-23T20:58:06.567Z",
"updatedOn": "2026-06-23T23:36:13.177Z",
"updatedBy": "870010733",
"content": {
"username": "bill",
"email": "bill@example.com"
}
}
]
headers = {
"X-DOMO-Developer-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-DOMO-Developer-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
id: 'a8428d64-a01d-49b2-9144-ddeec001acf8',
datastoreId: '39b88a97-8247-4c0d-ba1d-8ed78d1a6680',
collectionId: '232e6d6c-46e9-49b6-a137-8933f0f05999',
syncRequired: true,
owner: '870010733',
createdBy: '870010733',
createdOn: '2026-06-23T20:58:06.567Z',
updatedOn: '2026-06-23T23:36:13.177Z',
updatedBy: '870010733',
content: {username: 'bill', email: 'bill@example.com'}
}
])
};
fetch('https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
[
'id' => 'a8428d64-a01d-49b2-9144-ddeec001acf8',
'datastoreId' => '39b88a97-8247-4c0d-ba1d-8ed78d1a6680',
'collectionId' => '232e6d6c-46e9-49b6-a137-8933f0f05999',
'syncRequired' => true,
'owner' => '870010733',
'createdBy' => '870010733',
'createdOn' => '2026-06-23T20:58:06.567Z',
'updatedOn' => '2026-06-23T23:36:13.177Z',
'updatedBy' => '870010733',
'content' => [
'username' => 'bill',
'email' => 'bill@example.com'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-DOMO-Developer-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import"
payload := strings.NewReader("[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-DOMO-Developer-Token", "<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))
}HttpResponse<String> response = Unirest.put("https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import")
.header("X-DOMO-Developer-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-DOMO-Developer-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]"
response = http.request(request)
puts response.read_body{
"Updated": 0,
"Created": 0,
"Upserted": 1
}Import Documents
Bulk-import complete document objects into a collection — the counterpart to Download Documents. Each item must be a full document (including its id); documents are upserted by id, so the original id, createdOn, and owner are preserved. This is the format produced by Download Documents, which makes the two endpoints a copy/restore pair. To add brand-new documents from raw content instead, use Create Document. Existing documents not present in the payload are left untouched.
curl --request PUT \
--url https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import \
--header 'Content-Type: application/json' \
--header 'X-DOMO-Developer-Token: <api-key>' \
--data '
[
{
"id": "a8428d64-a01d-49b2-9144-ddeec001acf8",
"datastoreId": "39b88a97-8247-4c0d-ba1d-8ed78d1a6680",
"collectionId": "232e6d6c-46e9-49b6-a137-8933f0f05999",
"syncRequired": true,
"owner": "870010733",
"createdBy": "870010733",
"createdOn": "2026-06-23T20:58:06.567Z",
"updatedOn": "2026-06-23T23:36:13.177Z",
"updatedBy": "870010733",
"content": {
"username": "bill",
"email": "bill@example.com"
}
}
]
'import requests
url = "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import"
payload = [
{
"id": "a8428d64-a01d-49b2-9144-ddeec001acf8",
"datastoreId": "39b88a97-8247-4c0d-ba1d-8ed78d1a6680",
"collectionId": "232e6d6c-46e9-49b6-a137-8933f0f05999",
"syncRequired": True,
"owner": "870010733",
"createdBy": "870010733",
"createdOn": "2026-06-23T20:58:06.567Z",
"updatedOn": "2026-06-23T23:36:13.177Z",
"updatedBy": "870010733",
"content": {
"username": "bill",
"email": "bill@example.com"
}
}
]
headers = {
"X-DOMO-Developer-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-DOMO-Developer-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
id: 'a8428d64-a01d-49b2-9144-ddeec001acf8',
datastoreId: '39b88a97-8247-4c0d-ba1d-8ed78d1a6680',
collectionId: '232e6d6c-46e9-49b6-a137-8933f0f05999',
syncRequired: true,
owner: '870010733',
createdBy: '870010733',
createdOn: '2026-06-23T20:58:06.567Z',
updatedOn: '2026-06-23T23:36:13.177Z',
updatedBy: '870010733',
content: {username: 'bill', email: 'bill@example.com'}
}
])
};
fetch('https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
[
'id' => 'a8428d64-a01d-49b2-9144-ddeec001acf8',
'datastoreId' => '39b88a97-8247-4c0d-ba1d-8ed78d1a6680',
'collectionId' => '232e6d6c-46e9-49b6-a137-8933f0f05999',
'syncRequired' => true,
'owner' => '870010733',
'createdBy' => '870010733',
'createdOn' => '2026-06-23T20:58:06.567Z',
'updatedOn' => '2026-06-23T23:36:13.177Z',
'updatedBy' => '870010733',
'content' => [
'username' => 'bill',
'email' => 'bill@example.com'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-DOMO-Developer-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import"
payload := strings.NewReader("[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-DOMO-Developer-Token", "<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))
}HttpResponse<String> response = Unirest.put("https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import")
.header("X-DOMO-Developer-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}.domo.com/api/datastores/v2/collections/{collectionId}/documents/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-DOMO-Developer-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"id\": \"a8428d64-a01d-49b2-9144-ddeec001acf8\",\n \"datastoreId\": \"39b88a97-8247-4c0d-ba1d-8ed78d1a6680\",\n \"collectionId\": \"232e6d6c-46e9-49b6-a137-8933f0f05999\",\n \"syncRequired\": true,\n \"owner\": \"870010733\",\n \"createdBy\": \"870010733\",\n \"createdOn\": \"2026-06-23T20:58:06.567Z\",\n \"updatedOn\": \"2026-06-23T23:36:13.177Z\",\n \"updatedBy\": \"870010733\",\n \"content\": {\n \"username\": \"bill\",\n \"email\": \"bill@example.com\"\n }\n }\n]"
response = http.request(request)
puts response.read_body{
"Updated": 0,
"Created": 0,
"Upserted": 1
}Authorizations
Domo Developer Token for authentication.
Path Parameters
The ID of the collection.
Body
Unique identifier for the document.
ID of the datastore the document belongs to.
ID of the collection the document belongs to.
Whether the document is pending a sync to the underlying dataset.
User ID of the document owner. v2 endpoints return this as a string; v1 endpoints (List, Get, Query, Update) return it as a numeric integer. This differs from Collection and Datastore owner fields, which are always integers.
User ID of the user who created the document. v2 endpoints always return this field. v1 endpoints return it only from Create Document; all other v1 endpoints (List, Get, Query, Update) omit it.
ISO 8601 timestamp when the document was created.
ISO 8601 timestamp when the document was last updated.
User ID of the user who last updated the document. v2 endpoints return this as a string; v1 endpoints return it as a numeric integer.
Arbitrary JSON content of the document.