curl --request POST \
--url https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"join_conditions": [
{
"base_field_id": "<string>",
"target_field_id": "<string>"
}
],
"rules": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"kind": "metadata",
"display_name": "<string>",
"description": "<string>"
}
],
"llm_model_prefix": "gemini-2.5-pro",
"pubsub_topic": "<string>"
}
'import requests
url = "https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts"
payload = {
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"join_conditions": [
{
"base_field_id": "<string>",
"target_field_id": "<string>"
}
],
"rules": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"kind": "metadata",
"display_name": "<string>",
"description": "<string>"
}
],
"llm_model_prefix": "gemini-2.5-pro",
"pubsub_topic": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
document_id: '<string>',
target_library_id: '<string>',
target_document_class_id: '<string>',
join_conditions: [{base_field_id: '<string>', target_field_id: '<string>'}],
rules: [
{
rule_id: '<string>',
base_field_id: '<string>',
target_field_id: '<string>',
kind: 'metadata',
display_name: '<string>',
description: '<string>'
}
],
llm_model_prefix: 'gemini-2.5-pro',
pubsub_topic: '<string>'
})
};
fetch('https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts', 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://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_id' => '<string>',
'target_library_id' => '<string>',
'target_document_class_id' => '<string>',
'join_conditions' => [
[
'base_field_id' => '<string>',
'target_field_id' => '<string>'
]
],
'rules' => [
[
'rule_id' => '<string>',
'base_field_id' => '<string>',
'target_field_id' => '<string>',
'kind' => 'metadata',
'display_name' => '<string>',
'description' => '<string>'
]
],
'llm_model_prefix' => 'gemini-2.5-pro',
'pubsub_topic' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts"
payload := strings.NewReader("{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"status": "PENDING",
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"matched_documents": 123,
"conflicted_documents": 123,
"notification_status": "PENDING",
"expire_at": "2023-11-07T05:31:56Z",
"result": {
"matched_documents": 123,
"conflicted_documents": 123,
"returned_conflicted_documents": 123,
"truncated": true,
"documents": [
{
"document_id": "<string>",
"document_title": "<string>",
"conflicts": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"base_values": [
"<string>"
],
"target_values": [
"<string>"
],
"explanation": "<string>"
}
],
"has_conflict": true,
"document_link": "<string>",
"llm_conflicts": [
{
"rule_id": "<string>",
"summary": "<string>",
"base_evidence": "<string>",
"target_evidence": "<string>"
}
]
}
],
"llm_truncated": true,
"llm_compared_documents": 123,
"llm_skipped_documents": 123
},
"error": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Check Document Conflicts
Create an async document conflict-check job and publish the final result to the requested Pub/Sub topic.
curl --request POST \
--url https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"join_conditions": [
{
"base_field_id": "<string>",
"target_field_id": "<string>"
}
],
"rules": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"kind": "metadata",
"display_name": "<string>",
"description": "<string>"
}
],
"llm_model_prefix": "gemini-2.5-pro",
"pubsub_topic": "<string>"
}
'import requests
url = "https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts"
payload = {
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"join_conditions": [
{
"base_field_id": "<string>",
"target_field_id": "<string>"
}
],
"rules": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"kind": "metadata",
"display_name": "<string>",
"description": "<string>"
}
],
"llm_model_prefix": "gemini-2.5-pro",
"pubsub_topic": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
document_id: '<string>',
target_library_id: '<string>',
target_document_class_id: '<string>',
join_conditions: [{base_field_id: '<string>', target_field_id: '<string>'}],
rules: [
{
rule_id: '<string>',
base_field_id: '<string>',
target_field_id: '<string>',
kind: 'metadata',
display_name: '<string>',
description: '<string>'
}
],
llm_model_prefix: 'gemini-2.5-pro',
pubsub_topic: '<string>'
})
};
fetch('https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts', 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://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_id' => '<string>',
'target_library_id' => '<string>',
'target_document_class_id' => '<string>',
'join_conditions' => [
[
'base_field_id' => '<string>',
'target_field_id' => '<string>'
]
],
'rules' => [
[
'rule_id' => '<string>',
'base_field_id' => '<string>',
'target_field_id' => '<string>',
'kind' => 'metadata',
'display_name' => '<string>',
'description' => '<string>'
]
],
'llm_model_prefix' => 'gemini-2.5-pro',
'pubsub_topic' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts"
payload := strings.NewReader("{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://document-assistant.us.aodocs.app/assistant/api/v1/tenants/{tenant}/documents:checkConflicts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"<string>\",\n \"target_library_id\": \"<string>\",\n \"target_document_class_id\": \"<string>\",\n \"join_conditions\": [\n {\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\"\n }\n ],\n \"rules\": [\n {\n \"rule_id\": \"<string>\",\n \"base_field_id\": \"<string>\",\n \"target_field_id\": \"<string>\",\n \"kind\": \"metadata\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"llm_model_prefix\": \"gemini-2.5-pro\",\n \"pubsub_topic\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"status": "PENDING",
"document_id": "<string>",
"target_library_id": "<string>",
"target_document_class_id": "<string>",
"matched_documents": 123,
"conflicted_documents": 123,
"notification_status": "PENDING",
"expire_at": "2023-11-07T05:31:56Z",
"result": {
"matched_documents": 123,
"conflicted_documents": 123,
"returned_conflicted_documents": 123,
"truncated": true,
"documents": [
{
"document_id": "<string>",
"document_title": "<string>",
"conflicts": [
{
"rule_id": "<string>",
"base_field_id": "<string>",
"target_field_id": "<string>",
"base_values": [
"<string>"
],
"target_values": [
"<string>"
],
"explanation": "<string>"
}
],
"has_conflict": true,
"document_link": "<string>",
"llm_conflicts": [
{
"rule_id": "<string>",
"summary": "<string>",
"base_evidence": "<string>",
"target_evidence": "<string>"
}
]
}
],
"llm_truncated": true,
"llm_compared_documents": 123,
"llm_skipped_documents": 123
},
"error": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The domain of the customer
"example.com"
Body
The document ID of the files
Library ID containing the target documents to compare against.
Document class ID containing the target documents to compare against.
All join conditions must match for a target document to be included.
1Show child attributes
Show child attributes
Conflict rules to execute on each matched target document.
1- MetadataConflictRule
- LLMConflictRule
Show child attributes
Show child attributes
The LLM provider to use. If not provided, the default provider will be used.
OpenAI, Google, Altirnao, MistralAI, Anthropic The prefix of the LLM model name to use. If not provided, the default model will be used.
"gemini-2.5-pro"
Pub/Sub topic that will receive the final job envelope.
Response
Successful Response
Conflict-check job ID.
Job status.
PENDING, RUNNING, COMPLETED, FAILED Base document ID.
Target library ID.
Target document class ID.
Number of matched target documents.
Number of matched target documents with conflicts.
Pub/Sub notification state for the final job envelope.
PENDING, SENT, FAILED Automatic cleanup timestamp for the stored job.
Final result when the job has completed.
Show child attributes
Show child attributes
Failure reason when the job has failed.