Список извлечений
GET /v1/extractions
Список записей извлечений для аутентифицированного пользователя. Результаты возвращаются в обратном хронологическом порядке (сначала новые). Поддерживается пагинация на основе курсора и фильтрация по шаблону, пакетному запуску или диапазону дат.
Попробуйте
Протестируйте этот эндпоинт интерактивно в Swagger UI.
Требуется авторизация
Укажите ваш API-ключ в заголовке Authorization.
Запрос
Заголовки
| Заголовок | Значение | Обязательно |
|---|---|---|
Authorization | Bearer <token> | Да |
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
templateId | string | Нет | Фильтрация результатов по извлечениям из определенного шаблона. |
runId | string | Нет | Фильтрация результатов по извлечениям из определенного пакетного запуска. Возвращает все совпадающие результаты (игнорирует limit/cursor). |
limit | number | Нет | Максимальное количество возвращаемых результатов. По умолчанию: 50, максимум: 100. |
cursor | string | Нет | Курсор пагинации. Передайте значение createdAt последнего элемента предыдущей страницы для получения следующей. |
dateFrom | string | Нет | Фильтрация извлечений, созданных в этот день или позже (YYYY-MM-DD). |
dateTo | string | Нет | Фильтрация извлечений, созданных в этот день или ранее (YYYY-MM-DD). |
Пагинация
Ответ включает булево значение hasMore. Когда оно true, передайте значение createdAt последнего элемента в качестве параметра cursor для получения следующей страницы.
При фильтрации по runId все совпадающие извлечения возвращаются в одном ответе (пагинация не требуется, так как пакетные запуски обычно небольшие).
Примеры кода
# List all extractions (default limit of 50)
curl https://api.docmap.io/v1/extractions \
-H "Authorization: Bearer dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"
# Filter by template and limit results
curl "https://api.docmap.io/v1/extractions?templateId=48291&limit=10" \
-H "Authorization: Bearer dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"
# Filter by batch run ID
curl "https://api.docmap.io/v1/extractions?runId=b4704c6e-8917-4671-8c92-178aec3eba92" \
-H "Authorization: Bearer dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"
# Filter by date range
curl "https://api.docmap.io/v1/extractions?dateFrom=2025-01-01&dateTo=2025-01-31" \
-H "Authorization: Bearer dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"
# Paginate through results
curl "https://api.docmap.io/v1/extractions?limit=10&cursor=2025-01-15T09:30:00.000Z" \
-H "Authorization: Bearer dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"const apiKey = process.env.DOCMAP_API_KEY
// List all extractions
const response = await fetch('https://api.docmap.io/v1/extractions', {
headers: { 'Authorization': `Bearer ${apiKey}` },
})
const { data, hasMore } = await response.json()
console.log(`Found ${data.length} extractions, hasMore: ${hasMore}`)
// Paginate through all results
let cursor: string | undefined
const allExtractions = []
do {
const url = new URL('https://api.docmap.io/v1/extractions')
url.searchParams.set('limit', '50')
if (cursor) url.searchParams.set('cursor', cursor)
const res = await fetch(url, {
headers: { 'Authorization': `Bearer ${apiKey}` },
})
const page = await res.json()
allExtractions.push(...page.data)
cursor = page.hasMore ? page.data.at(-1)?.createdAt : undefined
} while (cursor)
console.log(`Total: ${allExtractions.length} extractions`)
// Filter by template
const filtered = await fetch(
'https://api.docmap.io/v1/extractions?templateId=48291&limit=10',
{ headers: { 'Authorization': `Bearer ${apiKey}` } },
)
const { data: filteredData } = await filtered.json()import requests
api_key = "dm_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"
headers = {"Authorization": f"Bearer {api_key}"}
# List all extractions
response = requests.get(
"https://api.docmap.io/v1/extractions",
headers=headers,
)
result = response.json()
print(f"Found {len(result['data'])} extractions, hasMore: {result['hasMore']}")
# Paginate through all results
all_extractions = []
cursor = None
while True:
params = {"limit": 50}
if cursor:
params["cursor"] = cursor
response = requests.get(
"https://api.docmap.io/v1/extractions",
headers=headers,
params=params,
)
page = response.json()
all_extractions.extend(page["data"])
if not page["hasMore"]:
break
cursor = page["data"][-1]["createdAt"]
print(f"Total: {len(all_extractions)} extractions")
# Filter by date range
response = requests.get(
"https://api.docmap.io/v1/extractions",
headers=headers,
params={"dateFrom": "2025-01-01", "dateTo": "2025-01-31"},
)Ответ
Статус: 200 OK
Тело ответа содержит массив data с записями извлечений и булево значение hasMore, указывающее на наличие дополнительных страниц.
Поля верхнего уровня
| Поле | Тип | Описание |
|---|---|---|
data | ExtractionRecord[] | Массив записей извлечений. |
hasMore | boolean | true, если за текущей страницей есть ещё результаты. false при фильтрации по runId (возвращаются все результаты). |
Поля записи извлечения
Каждая запись извлечения в массиве содержит те же поля, что и ответ Запуск извлечения:
| Поле | Тип | Описание |
|---|---|---|
id | string | Уникальный ID извлечения (с префиксом extract-). |
userId | string | ID пользователя, которому принадлежит это извлечение. |
templateId | string | ID шаблона, использованного для извлечения. |
templateName | string | Отображаемое имя использованного шаблона. |
fileName | string | Исходное имя загруженного документа. |
status | "processing" | "completed" | "failed" | Текущий статус извлечения. "processing", если все еще обрабатывается, "completed" при успехе, "failed" при ошибке. |
extractedData | object | null | Извлеченные данные, соответствующие полям шаблона. null, если извлечение не удалось. |
error | string | null | Сообщение об ошибке с описанием неудачи. null, если извлечение прошло успешно. |
variables | Variable[] | Массив определений переменных шаблона, использованных при извлечении. |
source | "dashboard" | "api" | Способ запуска извлечения. |
runId | string | null | ID пакетного запуска, если он был указан. |
processingTimeMs | number | null | Общая продолжительность обработки в миллисекундах. |
createdAt | string | Временная метка ISO 8601 создания извлечения. |
Пример
{
"data": [
{
"id": "extract-KmL9nOpQrStUvWxYz",
"userId": "L5kM9nRpQ7vX3yZ1wD4eF6gHjA2",
"templateId": "48291",
"templateName": "Invoice Template",
"fileName": "invoice-2024-001.pdf",
"status": "completed",
"extractedData": {
"vendor_name": "Acme Corp",
"invoice_number": "INV-2024-001",
"total_amount": 1250.00
},
"error": null,
"variables": [
{
"name": "vendor_name",
"type": "string",
"description": "Name of the vendor or supplier"
}
],
"source": "api",
"runId": null,
"processingTimeMs": 3842,
"createdAt": "2025-01-20T14:30:00.000Z"
}
],
"hasMore": true
}Ошибки
| Статус | Код | Описание |
|---|---|---|
401 | UNAUTHORIZED | Отсутствующий, недействительный или просроченный API-ключ / токен. |
