Skip to content

Список извлечений

GET /v1/extractions

Список записей извлечений для аутентифицированного пользователя. Результаты возвращаются в обратном хронологическом порядке (сначала новые). Поддерживается пагинация на основе курсора и фильтрация по шаблону, пакетному запуску или диапазону дат.

Попробуйте

Протестируйте этот эндпоинт интерактивно в Swagger UI.

Требуется авторизация

Укажите ваш API-ключ в заголовке Authorization.

Запрос

Заголовки

ЗаголовокЗначениеОбязательно
AuthorizationBearer <token>Да

Параметры запроса

ПараметрТипОбязательноОписание
templateIdstringНетФильтрация результатов по извлечениям из определенного шаблона.
runIdstringНетФильтрация результатов по извлечениям из определенного пакетного запуска. Возвращает все совпадающие результаты (игнорирует limit/cursor).
limitnumberНетМаксимальное количество возвращаемых результатов. По умолчанию: 50, максимум: 100.
cursorstringНетКурсор пагинации. Передайте значение createdAt последнего элемента предыдущей страницы для получения следующей.
dateFromstringНетФильтрация извлечений, созданных в этот день или позже (YYYY-MM-DD).
dateTostringНетФильтрация извлечений, созданных в этот день или ранее (YYYY-MM-DD).

Пагинация

Ответ включает булево значение hasMore. Когда оно true, передайте значение createdAt последнего элемента в качестве параметра cursor для получения следующей страницы.

При фильтрации по runId все совпадающие извлечения возвращаются в одном ответе (пагинация не требуется, так как пакетные запуски обычно небольшие).

Примеры кода

bash
# 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"
typescript
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()
python
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, указывающее на наличие дополнительных страниц.

Поля верхнего уровня

ПолеТипОписание
dataExtractionRecord[]Массив записей извлечений.
hasMorebooleantrue, если за текущей страницей есть ещё результаты. false при фильтрации по runId (возвращаются все результаты).

Поля записи извлечения

Каждая запись извлечения в массиве содержит те же поля, что и ответ Запуск извлечения:

ПолеТипОписание
idstringУникальный ID извлечения (с префиксом extract-).
userIdstringID пользователя, которому принадлежит это извлечение.
templateIdstringID шаблона, использованного для извлечения.
templateNamestringОтображаемое имя использованного шаблона.
fileNamestringИсходное имя загруженного документа.
status"processing" | "completed" | "failed"Текущий статус извлечения. "processing", если все еще обрабатывается, "completed" при успехе, "failed" при ошибке.
extractedDataobject | nullИзвлеченные данные, соответствующие полям шаблона. null, если извлечение не удалось.
errorstring | nullСообщение об ошибке с описанием неудачи. null, если извлечение прошло успешно.
variablesVariable[]Массив определений переменных шаблона, использованных при извлечении.
source"dashboard" | "api"Способ запуска извлечения.
runIdstring | nullID пакетного запуска, если он был указан.
processingTimeMsnumber | nullОбщая продолжительность обработки в миллисекундах.
createdAtstringВременная метка ISO 8601 создания извлечения.

Пример

json
{
  "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
}

Ошибки

СтатусКодОписание
401UNAUTHORIZEDОтсутствующий, недействительный или просроченный API-ключ / токен.

Документация DocMap API