Endpoints
Process (batch)
Submit multiple items for processing in a single request. Each item contains its own documents and optional metadata.
Returns immediately with a batch_id and the total item count. Results are delivered via webhook as items complete.
Request body
requests(required): Array of batch items (max 100). Each item hasdocuments(required) andmetadata(optional).webhook(required): Object withurl,secret(optional), andincremental(optional, defaults totrue). Whenincrementalistrue, a webhook is sent as each item completes. Whenfalse, a single webhook is sent when the entire batch finishes.
Webhook events
batch.item.completed: A single item finished processing (incremental mode).batch.completed: The entire batch finished.batch.failed: All items in the batch failed.
POST
/
v3
/
deployments
/
{deployment_id}
/
batch
Process (batch)
curl --request POST \
--url https://api.matil.ai/v3/deployments/{deployment_id}/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"requests": [
{
"documents": [
{
"text": "Invoice #12345\nDate: 2024-01-15\nTotal: $1,234.56",
"type": "text",
"metadata": {}
}
],
"metadata": {}
}
],
"webhook": {
"url": "<string>",
"secret": "<string>",
"incremental": true
}
}
'import requests
url = "https://api.matil.ai/v3/deployments/{deployment_id}/batch"
payload = {
"requests": [
{
"documents": [
{
"text": "Invoice #12345
Date: 2024-01-15
Total: $1,234.56",
"type": "text",
"metadata": {}
}
],
"metadata": {}
}
],
"webhook": {
"url": "<string>",
"secret": "<string>",
"incremental": True
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requests: [
{
documents: [
{
text: 'Invoice #12345\nDate: 2024-01-15\nTotal: $1,234.56',
type: 'text',
metadata: {}
}
],
metadata: {}
}
],
webhook: {url: '<string>', secret: '<string>', incremental: true}
})
};
fetch('https://api.matil.ai/v3/deployments/{deployment_id}/batch', 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://api.matil.ai/v3/deployments/{deployment_id}/batch",
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([
'requests' => [
[
'documents' => [
[
'text' => 'Invoice #12345
Date: 2024-01-15
Total: $1,234.56',
'type' => 'text',
'metadata' => [
]
]
],
'metadata' => [
]
]
],
'webhook' => [
'url' => '<string>',
'secret' => '<string>',
'incremental' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.matil.ai/v3/deployments/{deployment_id}/batch"
payload := strings.NewReader("{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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))
}HttpResponse<String> response = Unirest.post("https://api.matil.ai/v3/deployments/{deployment_id}/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.matil.ai/v3/deployments/{deployment_id}/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"total_items": 123,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resource_version_number": 123,
"created_at": "2023-11-07T05:31:56Z",
"status": "pending",
"resource_type": "structure"
}{
"error": "DOCUMENT_DOWNLOAD_ERROR",
"message": "Failed to download document from the provided URL",
"details": null
}{
"error": "AUTHENTICATION_REQUIRED",
"message": "Authentication required. Provide a valid x-api-key header.",
"details": null
}{
"error": "INSUFFICIENT_CREDITS",
"message": "Insufficient credits. Top up your balance to continue processing.",
"details": null
}{
"error": "DEPLOYMENT_NOT_FOUND",
"message": "No valid deployment found for the provided ID.",
"details": null
}{
"error": "VALIDATION_ERROR",
"message": "Batch requests must contain between 1 and 100 items.",
"details": null
}Autorizaciones
Parámetros de ruta
Cuerpo
application/json
Request for batch document processing via deployment.
Respuesta
Successful Response
Response for batch processing request creation.
Unique identifier for the batch
Number of items in the batch
ID of the structure being processed
Version number of the structure
When the batch was created
Initial batch status
Type of resource being processed
¿Esta página le ayudó?
⌘I
Process (batch)
curl --request POST \
--url https://api.matil.ai/v3/deployments/{deployment_id}/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"requests": [
{
"documents": [
{
"text": "Invoice #12345\nDate: 2024-01-15\nTotal: $1,234.56",
"type": "text",
"metadata": {}
}
],
"metadata": {}
}
],
"webhook": {
"url": "<string>",
"secret": "<string>",
"incremental": true
}
}
'import requests
url = "https://api.matil.ai/v3/deployments/{deployment_id}/batch"
payload = {
"requests": [
{
"documents": [
{
"text": "Invoice #12345
Date: 2024-01-15
Total: $1,234.56",
"type": "text",
"metadata": {}
}
],
"metadata": {}
}
],
"webhook": {
"url": "<string>",
"secret": "<string>",
"incremental": True
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requests: [
{
documents: [
{
text: 'Invoice #12345\nDate: 2024-01-15\nTotal: $1,234.56',
type: 'text',
metadata: {}
}
],
metadata: {}
}
],
webhook: {url: '<string>', secret: '<string>', incremental: true}
})
};
fetch('https://api.matil.ai/v3/deployments/{deployment_id}/batch', 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://api.matil.ai/v3/deployments/{deployment_id}/batch",
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([
'requests' => [
[
'documents' => [
[
'text' => 'Invoice #12345
Date: 2024-01-15
Total: $1,234.56',
'type' => 'text',
'metadata' => [
]
]
],
'metadata' => [
]
]
],
'webhook' => [
'url' => '<string>',
'secret' => '<string>',
'incremental' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.matil.ai/v3/deployments/{deployment_id}/batch"
payload := strings.NewReader("{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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))
}HttpResponse<String> response = Unirest.post("https://api.matil.ai/v3/deployments/{deployment_id}/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.matil.ai/v3/deployments/{deployment_id}/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"requests\": [\n {\n \"documents\": [\n {\n \"text\": \"Invoice #12345\\nDate: 2024-01-15\\nTotal: $1,234.56\",\n \"type\": \"text\",\n \"metadata\": {}\n }\n ],\n \"metadata\": {}\n }\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"secret\": \"<string>\",\n \"incremental\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"total_items": 123,
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resource_version_number": 123,
"created_at": "2023-11-07T05:31:56Z",
"status": "pending",
"resource_type": "structure"
}{
"error": "DOCUMENT_DOWNLOAD_ERROR",
"message": "Failed to download document from the provided URL",
"details": null
}{
"error": "AUTHENTICATION_REQUIRED",
"message": "Authentication required. Provide a valid x-api-key header.",
"details": null
}{
"error": "INSUFFICIENT_CREDITS",
"message": "Insufficient credits. Top up your balance to continue processing.",
"details": null
}{
"error": "DEPLOYMENT_NOT_FOUND",
"message": "No valid deployment found for the provided ID.",
"details": null
}{
"error": "VALIDATION_ERROR",
"message": "Batch requests must contain between 1 and 100 items.",
"details": null
}