Find an API

Search public APIs with auth details & Postman guides

← All APIs

Zywave Insurance Agency Platform API

zywave.com · Company

Company OAuth2 Paid Insurance Agency Management Benefits Risk Management

API for Zywave's insurance agency platform — a suite of tools for commercial lines and employee benefits agencies. Zywave provides proposal generation, benefits administration, risk management analytics, compliance tools, and client engagement workflows. The API enables integration with agency management systems, benefits portals, and HR platforms. Key use case: syncing employer/employee benefits data between Zywave and HRIS systems.

Authentication

OAuth2 OAuth2 client credentials for platform integrations, or authorization code for agency-specific access. Contact [email protected] to register your application.

Sample Requests

GET Get client risk profile

Returns the commercial lines risk profile for a client including industry, employee count, revenue, and associated risk scores used for renewal analysis.

https://api.zywave.com/v2/clients/{clientId}/risk-profile

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
Authorization Bearer YOUR_ACCESS_TOKEN
curl -X GET "https://api.zywave.com/v2/clients/{clientId}/risk-profile" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
response = requests.get(
    "https://api.zywave.com/v2/clients/{clientId}/risk-profile",
    headers=headers,
)
print(response.json())
const url = 'https://api.zywave.com/v2/clients/{clientId}/risk-profile';

const response = await fetch(url, {
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  },
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.zywave.com/v2/clients/{clientId}/risk-profile"
	req, _ := http.NewRequest("GET", targetURL, nil)
	req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.zywave.com/v2/clients/{clientId}/risk-profile")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.zywave.com/v2/clients/{clientId}/risk-profile";
$opts = ["http" => [
    "method" => "GET",
    "header" => implode("\r\n", [
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST Generate proposal

Creates an insurance proposal document using Zywave's proposal engine. Merges client data, carrier quotes, and agency branding into a PDF proposal.

https://api.zywave.com/v2/proposals

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
Content-Type application/json
Authorization Bearer YOUR_ACCESS_TOKEN
Request Body — data you're sending
{
  "lines": [
    "GeneralLiability",
    "WorkersComp",
    "CommercialAuto"
  ],
  "clientId": "CLT-001234",
  "proposalType": "Renewal",
  "agencyBranding": true,
  "includeRiskAnalysis": true
}
curl -X POST "https://api.zywave.com/v2/proposals" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"lines":["GeneralLiability","WorkersComp","CommercialAuto"],"clientId":"CLT-001234","proposalType":"Renewal","agencyBranding":true,"includeRiskAnalysis":true}'
import requests
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
data = {
    "lines": [
        "GeneralLiability",
        "WorkersComp",
        "CommercialAuto"
    ],
    "clientId": "CLT-001234",
    "proposalType": "Renewal",
    "agencyBranding": true,
    "includeRiskAnalysis": true
}
response = requests.post(
    "https://api.zywave.com/v2/proposals",
    headers=headers,
    json=data,
)
print(response.json())
const url = 'https://api.zywave.com/v2/proposals';

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  },
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
  "lines": [
    "GeneralLiability",
    "WorkersComp",
    "CommercialAuto"
  ],
  "clientId": "CLT-001234",
  "proposalType": "Renewal",
  "agencyBranding": true,
  "includeRiskAnalysis": true
}),
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"bytes"
	"encoding/json"
)

func main() {
	targetURL := "https://api.zywave.com/v2/proposals"
	jsonData, _ := json.Marshal({"lines":["GeneralLiability","WorkersComp","CommercialAuto"],"clientId":"CLT-001234","proposalType":"Renewal","agencyBranding":true,"includeRiskAnalysis":true})
	req, _ := http.NewRequest("POST", targetURL, bytes.NewBuffer(jsonData))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.zywave.com/v2/proposals")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)
req["Content-Type"] = "application/json"
req["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
req["Content-Type"] = "application/json"
req.body = "{\"lines\":[\"GeneralLiability\",\"WorkersComp\",\"CommercialAuto\"],\"clientId\":\"CLT-001234\",\"proposalType\":\"Renewal\",\"agencyBranding\":true,\"includeRiskAnalysis\":true}"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.zywave.com/v2/proposals";
$opts = ["http" => [
    "method" => "POST",
    "header" => implode("\r\n", [
        "Content-Type: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN",
        "Content-Type: application/json"
    ]),
    "content" => json_encode({"lines":["GeneralLiability","WorkersComp","CommercialAuto"],"clientId":"CLT-001234","proposalType":"Renewal","agencyBranding":true,"includeRiskAnalysis":true}),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. Contact [email protected] to register your integration and receive OAuth2 credentials
  2. Zywave offers two API tracks: Agency Platform (commercial lines/benefits) and Broker Briefcase (content)
  3. Client IDs must be established in Zywave — import via /clients endpoint or sync from AMS
  4. Proposal generation is async — poll /proposals/{id}/status until complete, then download PDF
  5. Zywave also provides compliance and regulatory content APIs for insurance content delivery
  6. Benefits API covers enrollment, employee census, and carrier submission workflows

What can you build with Zywave Insurance Agency Platform API?

Zywave Insurance Agency Platform API is a Company API. Developers commonly use company APIs for:

  • enriching CRM records with company firmographics
  • building lead-generation and prospecting tools
  • verifying business identity and registration details
  • monitoring competitors and market intelligence
  • powering B2B data enrichment pipelines

OAuth 2.0. OAuth lets your app act on behalf of a user. You redirect them to authorise access, receive a token, then use that token in requests. Best for accessing user-owned data. Zywave Insurance Agency Platform API is a paid API — check the provider's pricing page before building a production integration.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗