curl --request GET \
--url https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline', 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.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline",
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: Bearer <token>"
],
]);
$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://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"title": "<string>",
"carrier": "<string>",
"lineLabel": "<string>",
"windowStart": "2023-12-25",
"dataAsOf": "2023-12-25",
"pageUrl": "<string>",
"productId": "product_0M9XMB9",
"updatedAt": "2023-11-07T05:31:56Z",
"document": {
"schemaVersion": 3,
"product": {
"name": "<string>",
"carrier": "<string>",
"lineLabel": "<string>"
},
"period": {
"since": "2023-12-25",
"dataAsOf": "2023-12-25"
},
"generatedAt": "2023-11-07T05:31:56Z",
"totals": {
"changes": 1,
"filings": 1,
"states": 1
},
"naic": {
"line": "<string>",
"note": "<string>",
"totals": [
{
"year": 2045,
"writtenPremium": 123,
"lossRatio": 123,
"marketLossRatio": 123
}
]
},
"changes": [
{
"id": "<string>",
"title": "<string>",
"filedAs": "<string>",
"category": "product",
"origin": "statute_or_regulator",
"lanes": [
"launch"
],
"ratePlan": true,
"ruleSections": [
"general_rules"
],
"quotes": [
{
"source": "description",
"text": "<string>",
"trackingNumber": "<string>"
}
],
"counts": {
"filings": 1,
"states": 1,
"inForce": 1,
"pending": 1,
"withdrawn": 1
},
"effective": {
"first": "2023-12-25",
"last": "2023-12-25",
"median": "2023-12-25"
},
"rolloutDays": 1,
"leadStates": [
"AL"
],
"firstSubmitted": "2023-12-25",
"states": {},
"newForms": [
{
"formNumber": "<string>",
"edition": "<string>",
"title": "<string>",
"group": "coverage",
"filings": [
{
"trackingNumber": "<string>",
"state": "AL",
"fileId": "<string>"
}
]
}
],
"writingCompanies": [
"<string>"
]
}
],
"appetite": [
{
"id": "<string>",
"subject": "<string>",
"direction": "widens",
"companies": [
"<string>"
],
"quote": {
"source": "description",
"text": "<string>",
"trackingNumber": "<string>"
},
"changeIds": [
"<string>"
],
"states": {},
"counts": {
"inForce": 1,
"pending": 1
},
"effective": {
"first": "2023-12-25",
"last": "2023-12-25"
},
"announced": "2023-12-25"
}
],
"rateChanges": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"effective": "2023-12-25",
"effectiveRequested": true,
"fileId": "<string>",
"percent": 123,
"indicatedPercent": 123,
"status": "in_force",
"writtenPremium": 123,
"premiumChange": 123,
"policyholders": 1,
"ratePlan": true,
"writingCompanies": [
"<string>"
]
}
],
"ratePlanYears": [
{
"year": 2045,
"ratePlanCount": 1,
"stateCount": 1,
"averagePercent": 123,
"averageMethod": "premium_weighted",
"medianPercent": 123,
"minPercent": 123,
"maxPercent": 123,
"medianIndicatedGap": 123,
"premiumChange": 123,
"policyholders": 1
}
],
"states": {},
"filings": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"effective": "2023-12-25",
"submitted": "2023-12-25",
"status": "in_force",
"objectionLetterCount": 1,
"fileId": "<string>",
"filingTypeNormalized": "FORM",
"productName": "<string>"
}
],
"excluded": [
{
"trackingNumber": "<string>",
"state": "AL",
"effective": "2023-12-25",
"submitted": "2023-12-25",
"status": "in_force",
"fileId": "<string>",
"filingTypeNormalized": "FORM",
"productName": "<string>",
"reasonCode": "other_product",
"reason": "<string>"
}
],
"objections": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"date": "2023-12-25",
"excerpt": "<string>",
"topics": [
"admin"
]
}
],
"objectionTopics": {
"admin": 1,
"statute": 1,
"rating_rules": 1,
"form_language": 1,
"rate_support": 1,
"cat_model": 1
},
"news": [
{
"date": "2023-12-25",
"title": "<string>",
"url": "<string>",
"kind": "product_change"
}
]
}
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}Get a product's timeline
Get the timeline of a product: its changes grouped from state filings, with rate changes, per-state forms and components, objections, news and every filing found, in a change or excluded with the reason. Links in the document open filing artifacts in the Effective app. Documents can be several megabytes.
Merged product IDs resolve to the surviving product. 404 when the product does not exist or has no timeline; most products have none. A timeline is kept on the latest product of a succession and covers the products it replaced.
Access: needs access to every configured state of the product, since a timeline covers them all; otherwise 403 product_access_required. Read state-by-state filings, forms and events for the states you can access.
curl --request GET \
--url https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline', 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.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline",
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: Bearer <token>"
],
]);
$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://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.canary.effectiveai.app/api/v2/insurance/products/{productId}/timeline")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"title": "<string>",
"carrier": "<string>",
"lineLabel": "<string>",
"windowStart": "2023-12-25",
"dataAsOf": "2023-12-25",
"pageUrl": "<string>",
"productId": "product_0M9XMB9",
"updatedAt": "2023-11-07T05:31:56Z",
"document": {
"schemaVersion": 3,
"product": {
"name": "<string>",
"carrier": "<string>",
"lineLabel": "<string>"
},
"period": {
"since": "2023-12-25",
"dataAsOf": "2023-12-25"
},
"generatedAt": "2023-11-07T05:31:56Z",
"totals": {
"changes": 1,
"filings": 1,
"states": 1
},
"naic": {
"line": "<string>",
"note": "<string>",
"totals": [
{
"year": 2045,
"writtenPremium": 123,
"lossRatio": 123,
"marketLossRatio": 123
}
]
},
"changes": [
{
"id": "<string>",
"title": "<string>",
"filedAs": "<string>",
"category": "product",
"origin": "statute_or_regulator",
"lanes": [
"launch"
],
"ratePlan": true,
"ruleSections": [
"general_rules"
],
"quotes": [
{
"source": "description",
"text": "<string>",
"trackingNumber": "<string>"
}
],
"counts": {
"filings": 1,
"states": 1,
"inForce": 1,
"pending": 1,
"withdrawn": 1
},
"effective": {
"first": "2023-12-25",
"last": "2023-12-25",
"median": "2023-12-25"
},
"rolloutDays": 1,
"leadStates": [
"AL"
],
"firstSubmitted": "2023-12-25",
"states": {},
"newForms": [
{
"formNumber": "<string>",
"edition": "<string>",
"title": "<string>",
"group": "coverage",
"filings": [
{
"trackingNumber": "<string>",
"state": "AL",
"fileId": "<string>"
}
]
}
],
"writingCompanies": [
"<string>"
]
}
],
"appetite": [
{
"id": "<string>",
"subject": "<string>",
"direction": "widens",
"companies": [
"<string>"
],
"quote": {
"source": "description",
"text": "<string>",
"trackingNumber": "<string>"
},
"changeIds": [
"<string>"
],
"states": {},
"counts": {
"inForce": 1,
"pending": 1
},
"effective": {
"first": "2023-12-25",
"last": "2023-12-25"
},
"announced": "2023-12-25"
}
],
"rateChanges": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"effective": "2023-12-25",
"effectiveRequested": true,
"fileId": "<string>",
"percent": 123,
"indicatedPercent": 123,
"status": "in_force",
"writtenPremium": 123,
"premiumChange": 123,
"policyholders": 1,
"ratePlan": true,
"writingCompanies": [
"<string>"
]
}
],
"ratePlanYears": [
{
"year": 2045,
"ratePlanCount": 1,
"stateCount": 1,
"averagePercent": 123,
"averageMethod": "premium_weighted",
"medianPercent": 123,
"minPercent": 123,
"maxPercent": 123,
"medianIndicatedGap": 123,
"premiumChange": 123,
"policyholders": 1
}
],
"states": {},
"filings": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"effective": "2023-12-25",
"submitted": "2023-12-25",
"status": "in_force",
"objectionLetterCount": 1,
"fileId": "<string>",
"filingTypeNormalized": "FORM",
"productName": "<string>"
}
],
"excluded": [
{
"trackingNumber": "<string>",
"state": "AL",
"effective": "2023-12-25",
"submitted": "2023-12-25",
"status": "in_force",
"fileId": "<string>",
"filingTypeNormalized": "FORM",
"productName": "<string>",
"reasonCode": "other_product",
"reason": "<string>"
}
],
"objections": [
{
"trackingNumber": "<string>",
"state": "AL",
"changeId": "<string>",
"date": "2023-12-25",
"excerpt": "<string>",
"topics": [
"admin"
]
}
],
"objectionTopics": {
"admin": 1,
"statute": 1,
"rating_rules": 1,
"form_language": 1,
"rate_support": 1,
"cat_model": 1
},
"news": [
{
"date": "2023-12-25",
"title": "<string>",
"url": "<string>",
"kind": "product_change"
}
]
}
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}{
"error": "<string>",
"code": "<string>",
"details": [
{
"location": "path",
"path": [
"<string>"
],
"code": "required",
"message": "<string>"
}
],
"requestId": "<string>",
"dataset": "naic",
"businessCode": "<string>",
"violations": [
{
"code": "<string>",
"message": "<string>",
"path": "<string>",
"value": "<unknown>",
"constraint": "<string>",
"cite": "<string>"
}
],
"violationsTruncated": true,
"executionId": "<string>",
"accessUrl": "<string>"
}Authorizations
Effective API key. Send Authorization: Bearer sk-eai-...
Path Parameters
Managed product_ ID or bare checked code; case-insensitive with Crockford aliases.
Response
The product's timeline.
Timeline slug. Use exactly as returned.
Product name as shown on the timeline.
1 - 200Carrier or group that files the product.
1 - 200Line of business in plain words.
1 - 200First filing date the timeline covers.
Date the source filings were read.
Published timeline page, when one exists; may require sign-in.
2048Directory product (product_…) this timeline describes, or null until it is linked. Read the timeline from the product with getProductTimelineForProduct.
"product_0M9XMB9"
When the timeline was last published.
Timeline built from state filings: its changes, rate changes, per-state forms and components, objections, and every filing found, in a change or excluded with the reason. Stored as published.
Show child attributes
Show child attributes