curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"packetId": "550e8400-e29b-41d4-a716-446655440091",
"entityType": "policy",
"entityId": "550e8400-e29b-41d4-a716-446655440092",
"name": "Original policy documents",
"issuedAt": 1517616000000,
"documents": [
{
"name": "Policy packet",
"fileBase64": "JVBERi0xLjcKLi4u"
}
]
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import"
payload = {
"packetId": "550e8400-e29b-41d4-a716-446655440091",
"entityType": "policy",
"entityId": "550e8400-e29b-41d4-a716-446655440092",
"name": "Original policy documents",
"issuedAt": 1517616000000,
"documents": [
{
"name": "Policy packet",
"fileBase64": "JVBERi0xLjcKLi4u"
}
]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
packetId: '550e8400-e29b-41d4-a716-446655440091',
entityType: 'policy',
entityId: '550e8400-e29b-41d4-a716-446655440092',
name: 'Original policy documents',
issuedAt: 1517616000000,
documents: [{name: 'Policy packet', fileBase64: 'JVBERi0xLjcKLi4u'}]
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import', 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}/forms/packets/import",
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([
'packetId' => '550e8400-e29b-41d4-a716-446655440091',
'entityType' => 'policy',
'entityId' => '550e8400-e29b-41d4-a716-446655440092',
'name' => 'Original policy documents',
'issuedAt' => 1517616000000,
'documents' => [
[
'name' => 'Policy packet',
'fileBase64' => 'JVBERi0xLjcKLi4u'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import"
payload := strings.NewReader("{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440091"
}Import Historical Form Packet
Attach historical issued PDF documents directly to an existing quote or policy, without a form template. The packet appears in the record’s Forms tab with a Historical label and the original issuance date. Importing does not complete or bind a quote, change a policy, or populate its working forms.
Supply a stable caller-generated UUID as packetId and retain it across
import runs. An identical retry returns the same id indefinitely; reusing
the id for different metadata, documents, ordering, or another entity returns
409. This endpoint uses packetId, not the Idempotency-Key header.
issuedAt is the original issuance time in Unix milliseconds. It cannot be
in the future. The time of import is recorded separately. Historical PDFs
retain legacy provenance: unavailable template and generation history is
not invented. Documents remain in the supplied order. Each individual PDF
is stored unchanged; a single-document packet also downloads byte for byte.
For multiple documents the packet download concatenates their pages.
Accepts 1–50 readable, unencrypted PDFs, at most 20 MB combined before base64 encoding. For claim/incident working forms use Upload Event Form instead.
Required permission: form.create, plus quote.view or policy.view
for the target record.
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"packetId": "550e8400-e29b-41d4-a716-446655440091",
"entityType": "policy",
"entityId": "550e8400-e29b-41d4-a716-446655440092",
"name": "Original policy documents",
"issuedAt": 1517616000000,
"documents": [
{
"name": "Policy packet",
"fileBase64": "JVBERi0xLjcKLi4u"
}
]
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import"
payload = {
"packetId": "550e8400-e29b-41d4-a716-446655440091",
"entityType": "policy",
"entityId": "550e8400-e29b-41d4-a716-446655440092",
"name": "Original policy documents",
"issuedAt": 1517616000000,
"documents": [
{
"name": "Policy packet",
"fileBase64": "JVBERi0xLjcKLi4u"
}
]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
packetId: '550e8400-e29b-41d4-a716-446655440091',
entityType: 'policy',
entityId: '550e8400-e29b-41d4-a716-446655440092',
name: 'Original policy documents',
issuedAt: 1517616000000,
documents: [{name: 'Policy packet', fileBase64: 'JVBERi0xLjcKLi4u'}]
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import', 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}/forms/packets/import",
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([
'packetId' => '550e8400-e29b-41d4-a716-446655440091',
'entityType' => 'policy',
'entityId' => '550e8400-e29b-41d4-a716-446655440092',
'name' => 'Original policy documents',
'issuedAt' => 1517616000000,
'documents' => [
[
'name' => 'Policy packet',
'fileBase64' => 'JVBERi0xLjcKLi4u'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import"
payload := strings.NewReader("{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/forms/packets/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"packetId\": \"550e8400-e29b-41d4-a716-446655440091\",\n \"entityType\": \"policy\",\n \"entityId\": \"550e8400-e29b-41d4-a716-446655440092\",\n \"name\": \"Original policy documents\",\n \"issuedAt\": 1517616000000,\n \"documents\": [\n {\n \"name\": \"Policy packet\",\n \"fileBase64\": \"JVBERi0xLjcKLi4u\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440091"
}