Developer Preview REST API

Insurance Intelligence API

The same structured policy data you see in the Policy Penguin dashboard, available as a REST API. Pull coverage details, insights, and discounts into your own tools.

Developer Preview: Sign up, generate an API key from your dashboard, and start building. The docs below reflect real endpoints you can call today.

Overview

Policy Penguin extracts structured data from insurance policy documents: coverage types, limits, deductibles, endorsements, discounts, vehicles, properties. This API gives you programmatic access to that data.

Use it to pull policy details into spreadsheets, automate renewal monitoring, build custom dashboards, or integrate insurance data into your existing financial tools. Any language, any platform.

Looking for AI agent access instead? See the Insurance MCP Server, which exposes the same data through the Model Context Protocol.

What you can build

  • Pull your full insurance portfolio into a spreadsheet with one request
  • Get alerts when a renewal has rate changes above your threshold
  • Feed structured policy data into your financial planning tools
  • Build a custom dashboard across all your carriers

Authentication

Bearer token authentication. API keys are generated from your Policy Penguin dashboard and scoped to your account.

curl -H "Authorization: Bearer pp_live_abc123..." \
https://api.policypenguin.ai/v1/portfolio

Keys can be scoped to read-only or full access. Revoke any key instantly from the dashboard.

Base URL

https://api.policypenguin.ai/v1

All endpoints are versioned in the URL. The current version is v1.

Endpoints

Four endpoints covering portfolio overview, policy detail, asset detail, and document upload. All return JSON.

GET /v1/portfolio

All policies and assets in your account.

Example Request

curl -H "Authorization: Bearer pp_live_abc123..." \
"https://api.policypenguin.ai/v1/portfolio"

Example Response

{
  "policies": [
    {
      "id": "pol_a1b2c3",
      "carrier": "State Farm",
      "carrier_slug": "state-farm",
      "policy_number": "SF-12345678",
      "type": "auto",
      "state": "GA",
      "premium": {
        "amount": 2400,
        "period": "6-month",
        "currency": "usd"
      },
      "effective": {
        "start": "2025-12-01",
        "end": "2026-06-01"
      },
      "vehicles": [
        {
          "year": 2022,
          "make": "Honda",
          "model": "Accord"
        },
        {
          "year": 2020,
          "make": "Toyota",
          "model": "Camry"
        }
      ],
      "coverage": {
        "summary": [
          "Bodily Injury: $250K/$500K",
          "Property Damage: $100K",
          "Collision: $750 deductible"
        ],
        "limits": "250K / 500K / 100K",
        "deductible": "$750"
      },
      "insights": {
        "total": 8,
        "issues": 2,
        "status": "completed"
      },
      "renewals": 3
    }
  ],
  "assets": [
    {
      "id": "ast_x1y2z3",
      "type": "vehicle",
      "name": "2022 Honda Accord",
      "status": "covered",
      "covered_by": {
        "carrier": "State Farm",
        "policy_number": "SF-12345678"
      },
      "premium": {
        "amount": 2400,
        "period": "6-month",
        "currency": "usd"
      },
      "effective_end": "2026-06-01"
    }
  ]
}

GET /v1/policies/:id

Full detail for a single policy. Returns coverage with structured numeric data, generated insights, discount analysis with savings estimates, and renewal timeline. One call, everything you need.

Example Request

curl -H "Authorization: Bearer pp_live_abc123..." \
https://api.policypenguin.ai/v1/policies/pol_a1b2c3

Example Response

{
  "policy": {
    "id": "pol_a1b2c3",
    "carrier": "State Farm",
    "carrier_slug": "state-farm",
    "policy_number": "SF-12345678",
    "type": "auto",
    "state": "GA",
    "premium": {
      "amount": 2400,
      "period": "6-month",
      "currency": "usd"
    },
    "effective": {
      "start": "2025-12-01",
      "end": "2026-06-01"
    },
    "coverage": {
      "summary": [
        "Bodily Injury: $250K/$500K",
        "Property Damage: $100K",
        "Collision: $750 deductible"
      ],
      "limits": "250K / 500K / 100K",
      "deductible": "$750",
      "exclusions": [
        "Rideshare and delivery exclusion"
      ],
      "state_minimum": {
        "meetsMinimum": true,
        "stateCode": "GA",
        "minimumDisplay": "25/50/25"
      },
      "policy_level": [
        {
          "slug": "auto_bi",
          "name": "Bodily Injury Liability",
          "limits": [
            {
              "type": "per_person",
              "amount": 250000
            },
            {
              "type": "per_accident",
              "amount": 500000
            }
          ],
          "deductibles": [],
          "premium": 1157
        },
        {
          "slug": "auto_pd",
          "name": "Property Damage Liability",
          "limits": [
            {
              "type": "flat",
              "amount": 100000
            }
          ],
          "deductibles": [],
          "premium": 520
        }
      ],
      "by_vehicle": [
        {
          "vehicle": {
            "year": 2022,
            "make": "Honda",
            "model": "Accord"
          },
          "items": [
            {
              "slug": "collision",
              "name": "Collision",
              "limits": [],
              "deductibles": [
                {
                  "amount": 750
                }
              ],
              "premium": 281
            },
            {
              "slug": "comprehensive",
              "name": "Comprehensive",
              "limits": [],
              "deductibles": [
                {
                  "amount": 200
                }
              ],
              "premium": 206
            }
          ]
        }
      ]
    }
  },
  "insights": [
    {
      "category": "market",
      "priority": 1,
      "title": "Upcoming Rate Change",
      "description": "A rate filing indicates a 12% increase for renewals starting next quarter.",
      "action": null
    },
    {
      "category": "savings",
      "priority": 3,
      "title": "Missing Discount Available",
      "description": "Defensive driving course discount could reduce your premium.",
      "action": "Complete a state-approved defensive driving course."
    }
  ],
  "discounts": {
    "currency": "usd",
    "current": [
      {
        "name": "Multi-Line Discount",
        "category": "multi_line",
        "applied": true
      },
      {
        "name": "Paid In Full Discount",
        "category": "payment",
        "applied": true
      }
    ],
    "missing": [
      {
        "name": "Defensive Driving Discount",
        "category": "driver_behavior",
        "estimated_savings": {
          "min": 120,
          "max": 240
        },
        "requirements": "Complete a state-approved course"
      }
    ],
    "total_potential_savings": {
      "min": 120,
      "max": 240
    }
  },
  "timeline": [
    {
      "carrier": "State Farm",
      "premium": 2400,
      "premium_annual": 4800,
      "percent_change": 8.1,
      "effective": {
        "start": "2025-12-01",
        "end": "2026-06-01"
      },
      "is_current": true
    },
    {
      "carrier": "State Farm",
      "premium": 2220,
      "premium_annual": 4440,
      "effective": {
        "start": "2025-06-01",
        "end": "2025-12-01"
      },
      "is_current": false
    }
  ]
}

GET /v1/assets/:id

Detail for a single asset (vehicle or property), including current coverage and premium trends.

Example Request

curl -H "Authorization: Bearer pp_live_abc123..." \
https://api.policypenguin.ai/v1/assets/ast_x1y2z3

Example Response

{
  "asset": {
    "type": "vehicle",
    "name": "2022 Honda Accord",
    "details": {
      "year": 2022,
      "make": "Honda",
      "model": "Accord"
    }
  },
  "current_coverage": {
    "carrier": "State Farm",
    "policy_number": "SF-12345678",
    "premium": {
      "amount": 2400,
      "period": "6-month",
      "currency": "usd"
    },
    "effective": {
      "start": "2025-12-01",
      "end": "2026-06-01"
    },
    "status": "active"
  },
  "premium_trends": {
    "current_monthly": 400,
    "change_percent": 8.1,
    "trend": "increasing"
  }
}

POST /v1/upload

Upload a policy document for extraction. Send the file as base64-encoded data in JSON. Returns structured policy data in about 15 seconds.

Request Body

Name Type Required Description
file string Yes Base64-encoded file content
filename string Yes Original filename
mime_type string Yes application/pdf, image/jpeg, or image/png

Example Request

curl -X POST -H "Authorization: Bearer pp_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"file": "JVBERi0xLjQK...", "filename": "my-policy.pdf", "mime_type": "application/pdf"}' \
  https://api.policypenguin.ai/v1/upload

Example Response

{
  "policies": [
    {
      "id": "pol_new123",
      "carrier": "Progressive",
      "type": "auto",
      "premium": {
        "amount": 1850,
        "period": "6-month",
        "currency": "usd"
      },
      "effective": {
        "start": "2026-03-15",
        "end": "2026-09-15"
      },
      "vehicles": [
        {
          "year": 2020,
          "make": "Toyota",
          "model": "Camry"
        }
      ],
      "extraction_quality": "clean",
      "is_renewal": false
    }
  ],
  "insights_status": "generating"
}

Rate Limits

Request type Limit
Read endpoints (GET) 1,000 requests/minute
Upload endpoint (POST /v1/upload) 60 requests/minute

Exceeding the limit returns 429 Too Many Requests with a Retry-After header.

Status Codes

Code Meaning
200Success
400Bad request. Check parameters
401Missing or invalid API key
404Resource not found (e.g., invalid policy ID)
429Rate limit exceeded
500Server error

Error Response Format

{
  "error": {
    "code": "POLICY_NOT_FOUND",
    "message": "No policy found with the given ID"
  }
}

Use Cases

Renewal Monitoring

Call GET /v1/portfolio weekly. When a policy's renewal is 30 days out, pull its details with GET /v1/policies/:id. The insights and timeline in the response tell you exactly what changed. Feed that into a Slack alert or email so you know before the bill arrives.

Portfolio Spreadsheet

Hit GET /v1/portfolio and dump the JSON into Google Sheets or Excel. Every policy, every vehicle, every coverage limit in one place. No more logging into three different carrier portals.

Financial Planning Integration

Pull total premiums from GET /v1/portfolio into your budgeting tools. Track insurance spend over time alongside your other financial data.

Discount Optimization

Run GET /v1/policies/:id across all your policies. The discount analysis in each response shows what's applied, what's missing, and the estimated savings. One API call per policy tells you exactly which phone calls to make and how much each one is worth.

Agent Upload Workflow

Use POST /v1/upload to send a policy document for extraction, then poll GET /v1/policies/:id until insights are ready. Ideal for automation pipelines where an agent receives a document and needs structured data back without manual steps.

Building with OpenClaw or another MCP client? The same data is available through our MCP server. See the OpenClaw tutorial for a step-by-step walkthrough.

Get your API key.

Sign up for Policy Penguin, upload a policy, and generate your API key from the dashboard.

Or see the Insurance MCP Server for AI agent access to the same data.