curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs', 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://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"runId": "0f204eac-17e5-42bc-93b1-0dd2aea57baa",
"flow": "submission",
"target": {
"kind": "folder",
"id": "3c93ad46-9d7c-4f5a-b4de-9f0f9a4f6a2e"
},
"parseTaskName": "create_submission_v1",
"status": "succeeded",
"attempts": 1,
"createdAt": "2026-06-30T12:01:30.000Z",
"finishedAt": "2026-06-30T12:03:05.000Z",
"stages": {
"extract": {
"status": "succeeded",
"attempts": 1,
"finishedAt": "2026-06-30T12:02:10.000Z"
},
"parse": {
"status": "succeeded",
"attempts": 1,
"finishedAt": "2026-06-30T12:03:05.000Z"
}
},
"createdEntities": [
{
"entityType": "submission",
"entityId": "2b8dc3a1-51de-4f92-a3a0-1f5ba3a9a111",
"deleted": false
},
{
"entityType": "quote",
"entityId": "61b3c2d4-7a90-4a1c-8321-9adf5f2f2222",
"deleted": false
}
],
"extractionReady": true,
"rerunOfRunId": null,
"reusedExtractOfRunId": null
},
{
"runId": "994bfc11-8ff3-485a-89ff-7839c9bb6101",
"flow": null,
"target": null,
"parseTaskName": "extract",
"status": "succeeded",
"attempts": 1,
"createdAt": "2026-06-30T11:01:10.000Z",
"finishedAt": "2026-06-30T11:01:25.000Z",
"legacy": true
}
],
"totalCount": 2
}List Parse Runs
List a company’s parse runs, newest-first and paginated. Use this to poll the outcome of a parse you kicked with Trigger Parse.
A run record is one logical parse run — the extract stage and the
create_<flow>_v<N> parse stage of a single trigger, reported together:
runIdis the logical run’s stable id.flowis the flow the run implements (submission,policy,exposures, orinvoice).targetis the{ kind, id }file or folder the run parsed.statusis the overall run status, collapsed to one ofrunning,succeeded, orfailed(every internalfailed_*retry state reads asfailed; a run that will still be retried reportsfailedhere — checkstagesforretryingdetail. A run holding for a precondition reads asrunning, because it has not failed).stagesbreaks the run into itsextractandparsestages, each with its ownstatus(including the distinctretrying, the not-yet-startedpending, andwaiting— holding for a precondition, not a failure),attempts, optionalerror, andfinishedAt.createdEntitieslists the entities the run created (entityType+entityId); an entity deleted after the run reportsdeleted: true.extractionReadysays whether the run’s merged extraction artifact was persisted.erroris present only on a run that recorded a failure message.
Runs that predate run grouping are reported as legacy records
(legacy: true): one record per pipeline task, target: null, no
stages/createdEntities.
Pagination uses the standard 1-based page / pageSize query params.
Required permission: file.view
curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs', 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://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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"
"net/http"
"io"
)
func main() {
url := "https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/files/parse-runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"runId": "0f204eac-17e5-42bc-93b1-0dd2aea57baa",
"flow": "submission",
"target": {
"kind": "folder",
"id": "3c93ad46-9d7c-4f5a-b4de-9f0f9a4f6a2e"
},
"parseTaskName": "create_submission_v1",
"status": "succeeded",
"attempts": 1,
"createdAt": "2026-06-30T12:01:30.000Z",
"finishedAt": "2026-06-30T12:03:05.000Z",
"stages": {
"extract": {
"status": "succeeded",
"attempts": 1,
"finishedAt": "2026-06-30T12:02:10.000Z"
},
"parse": {
"status": "succeeded",
"attempts": 1,
"finishedAt": "2026-06-30T12:03:05.000Z"
}
},
"createdEntities": [
{
"entityType": "submission",
"entityId": "2b8dc3a1-51de-4f92-a3a0-1f5ba3a9a111",
"deleted": false
},
{
"entityType": "quote",
"entityId": "61b3c2d4-7a90-4a1c-8321-9adf5f2f2222",
"deleted": false
}
],
"extractionReady": true,
"rerunOfRunId": null,
"reusedExtractOfRunId": null
},
{
"runId": "994bfc11-8ff3-485a-89ff-7839c9bb6101",
"flow": null,
"target": null,
"parseTaskName": "extract",
"status": "succeeded",
"attempts": 1,
"createdAt": "2026-06-30T11:01:10.000Z",
"finishedAt": "2026-06-30T11:01:25.000Z",
"legacy": true
}
],
"totalCount": 2
}Authorizations
API key authentication. Send your raw API key as the Authorization header value with NO scheme prefix — Authorization: YOUR-API-KEY. Do NOT prefix it with Bearer or ApiKey, and do not use an X-API-Key header; those are not accepted.
Path Parameters
Company identifier
Query Parameters
1-based page number. Defaults to the first page.
x >= 1Number of runs per page. Defaults to the API page size.
x >= 1