openapi: 3.0.4
info:
title: Pie Insurance Quote Api Appetite PriceIndication API
version: v1
servers:
- url: https://api.post-prod.pieinsurance.com/api/v1
security:
- bearer: []
tags:
- name: PriceIndication
paths:
/PriceIndication/{id}:
get:
tags:
- PriceIndication
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'500':
description: Internal Server Error
'501':
description: Not Implemented
'502':
description: Bad Gateway
'503':
description: Service Unavailable
'504':
description: Gateway Timeout
'505':
description: HTTP Version Not Supported
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteResponse'
example:
referReasons:
- no ReferReasons
declineReasons:
- no DeclineReasons
namedInsured: MSF Hotdog LTD
insuredAddress:
line1: 40 W Littleton Blvd Ste 211
city: Beverly Hills
state: CA
zip: '90210'
agencyId: 08deba69-602c-b83e-a82b-ef00017ebf3c
effectiveDate: '2026-05-30'
employersLiabilityLimits:
eachAccident: 1000000
eachEmployee: 1000000
eachPolicy: 1000000
quoteDate: '2026-05-25'
insuranceCompany: Insurance Company
classCodeQuotes:
- classCode: '2759'
description: BOX OR BOX SHOOK MFG
payroll: 300000
premium: 0
rate: 0.0
percentageOfPayroll: 0.0
stateQuotes:
- experienceModifierInput: 0.0
scheduleModifierFactor: 0.0
catastrophe: 30.0
classPremium: 30930.0
expenseConstant: 0.0
minimumPremium: 0
modifiedPremium: 0
policyTotalEstimatedCost: 29588.0
premiumDiscount: 200
scheduleModifier: 0.0
standardPremium: 0
subjectPremium: 0
totalTaxesAndAssessments: 0.0
terrorism: 90.0
totalEstimatedPremium: 29292.0
premiumDetails:
catastrophe: 13.0
classPremium: 1787.0
expenseConstant: 160.0
experienceModifier: 0.0
liabilityLimits: 120
minimumPremium: 1805
modifiedPremium: 2264
policyTotalEstimatedCost: 2081.0
premiumDiscount: 0
scheduleModifier: -453.0
standardPremium: 1811
subjectPremium: 2264
taxesAndAssessments:
- code: CAWCARF
description: Workers' Compensation Administration Revolving Fund
rate: 0.01704
premium: 34
totalTaxesAndAssessments: 70.0
terrorism: 27.0
totalEstimatedPremium: 2011.0
blanketWaiver: 0
specificWaiver: 0
territoryModifier: 357
installments:
full:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
monthly:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
quarterly:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
semiannual:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
isDirty: false
instantBindStatus: Unspecified
bindStatus: Quotable
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
security:
- bearer: []
/PriceIndication:
post:
tags:
- PriceIndication
parameters:
- name: agencyCode
in: query
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PriceIndicationRequest'
example:
state: CA
zip: '90210'
classCodes:
- classCode: '5403'
payroll: 20000
partnerAgentEmail: partner@agent.com
contactEmail: contact@customer.com
currentlyCovered: true
claimCountYear1: 0
claimCountYear2: 0
claimCountYear3: 1
effectiveDate: '2026-05-27'
emod: 1.0
blanketWaiver: false
responses:
'500':
description: Internal Server Error
'501':
description: Not Implemented
'502':
description: Bad Gateway
'503':
description: Service Unavailable
'504':
description: Gateway Timeout
'505':
description: HTTP Version Not Supported
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteDeclineResponse'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteResponse'
example:
referReasons:
- no ReferReasons
declineReasons:
- no DeclineReasons
namedInsured: MSF Hotdog LTD
insuredAddress:
line1: 40 W Littleton Blvd Ste 211
city: Beverly Hills
state: CA
zip: '90210'
agencyId: 08deba69-602e-0778-a82b-ef00017ebf3e
effectiveDate: '2026-05-30'
employersLiabilityLimits:
eachAccident: 1000000
eachEmployee: 1000000
eachPolicy: 1000000
quoteDate: '2026-05-25'
insuranceCompany: Insurance Company
classCodeQuotes:
- classCode: '2759'
description: BOX OR BOX SHOOK MFG
payroll: 300000
premium: 0
rate: 0.0
percentageOfPayroll: 0.0
stateQuotes:
- experienceModifierInput: 0.0
scheduleModifierFactor: 0.0
catastrophe: 30.0
classPremium: 30930.0
expenseConstant: 0.0
minimumPremium: 0
modifiedPremium: 0
policyTotalEstimatedCost: 29588.0
premiumDiscount: 200
scheduleModifier: 0.0
standardPremium: 0
subjectPremium: 0
totalTaxesAndAssessments: 0.0
terrorism: 90.0
totalEstimatedPremium: 29292.0
premiumDetails:
catastrophe: 13.0
classPremium: 1787.0
expenseConstant: 160.0
experienceModifier: 0.0
liabilityLimits: 120
minimumPremium: 1805
modifiedPremium: 2264
policyTotalEstimatedCost: 2081.0
premiumDiscount: 0
scheduleModifier: -453.0
standardPremium: 1811
subjectPremium: 2264
taxesAndAssessments:
- code: CAWCARF
description: Workers' Compensation Administration Revolving Fund
rate: 0.01704
premium: 34
totalTaxesAndAssessments: 70.0
terrorism: 27.0
totalEstimatedPremium: 2011.0
blanketWaiver: 0
specificWaiver: 0
territoryModifier: 357
installments:
full:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
monthly:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
quarterly:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
semiannual:
'2026-05-30':
premiumAmount: 2011
surchargeAmount: 70
totalAmount: 2081
isDirty: false
instantBindStatus: Unspecified
bindStatus: Quotable
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblemDetails'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblemDetails'
security:
- bearer: []
components:
schemas:
TaxDetails:
type: object
properties:
code:
type: string
nullable: true
description:
type: string
nullable: true
rate:
type: number
format: double
premium:
type: integer
format: int32
additionalProperties: false
InstantBindStatus:
enum:
- Unspecified
- Ineligible
- Eligible
- Pending
- Failed
- Succeeded
type: string
ClassCodeQuote:
required:
- classCode
- description
- payroll
- percentageOfPayroll
- premium
- rate
- state
type: object
properties:
classCode:
type: string
description:
type: string
payroll:
type: integer
format: int32
state:
type: string
premium:
type: integer
format: int32
rate:
type: number
format: double
percentageOfPayroll:
type: number
format: double
additionalProperties: false
BusinessAddress:
type: object
properties:
line1:
type: string
nullable: true
line2:
type: string
nullable: true
city:
type: string
nullable: true
state:
type: string
nullable: true
zip:
type: string
nullable: true
county:
type: string
nullable: true
country:
type: string
nullable: true
latitude:
type: number
format: double
nullable: true
longitude:
type: number
format: double
nullable: true
additionalProperties: false
BindStatus:
enum:
- Refer
- Decline
- Quotable
- Undetermined
type: string
PremiumDetails:
required:
- catastrophe
- classPremium
- expenseConstant
- experienceModifier
- minimumPremium
- modifiedPremium
- policyTotalEstimatedCost
- premiumDiscount
- scheduleModifier
- standardPremium
- subjectPremium
- taxesAndAssessments
- territoryModifier
- terrorism
- totalEstimatedPremium
- totalTaxesAndAssessments
type: object
properties:
catastrophe:
type: number
format: double
classPremium:
type: number
format: double
expenseConstant:
type: number
format: double
experienceModifier:
type: number
format: double
liabilityLimits:
type: integer
format: int32
nullable: true
minimumPremium:
type: integer
format: int32
modifiedPremium:
type: integer
format: int32
policyTotalEstimatedCost:
type: number
format: double
premiumDiscount:
type: integer
format: int32
scheduleModifier:
type: number
format: double
standardPremium:
type: integer
format: int32
subjectPremium:
type: integer
format: int32
taxesAndAssessments:
type: array
items:
$ref: '#/components/schemas/TaxDetails'
totalTaxesAndAssessments:
type: number
format: double
terrorism:
type: number
format: double
totalEstimatedPremium:
type: number
format: double
blanketWaiver:
type: integer
format: int32
nullable: true
specificWaiver:
type: integer
format: int32
nullable: true
territoryModifier:
type: integer
format: int32
additionalProperties: false
EmployersLiabilityLimits:
type: object
properties:
eachAccident:
type: integer
format: int32
nullable: true
eachEmployee:
type: integer
format: int32
nullable: true
eachPolicy:
type: integer
format: int32
nullable: true
additionalProperties: false
QuoteResponse:
required:
- agencyId
- classCodeQuotes
- effectiveDate
- employersLiabilityLimits
- installments
- insuranceCompany
- insuredAddress
- namedInsured
- premiumDetails
- quoteDate
- stateQuotes
type: object
properties:
referReasons:
type: array
items:
type: string
nullable: true
declineReasons:
type: array
items:
type: string
nullable: true
namedInsured:
type: string
insuredAddress:
$ref: '#/components/schemas/BusinessAddress'
agencyId:
type: string
format: uuid
effectiveDate:
type: string
employersLiabilityLimits:
$ref: '#/components/schemas/EmployersLiabilityLimits'
quoteDate:
type: string
insuranceCompany:
type: string
classCodeQuotes:
type: array
items:
$ref: '#/components/schemas/ClassCodeQuote'
stateQuotes:
type: array
items:
$ref: '#/components/schemas/StateQuote'
primaryStateQuotes:
type: array
items:
$ref: '#/components/schemas/StateQuote'
nullable: true
premiumDetails:
$ref: '#/components/schemas/PremiumDetails'
installments:
type: object
properties:
full:
type: object
additionalProperties:
$ref: '#/components/schemas/Payment'
semiannual:
type: object
additionalProperties:
$ref: '#/components/schemas/Payment'
quarterly:
type: object
additionalProperties:
$ref: '#/components/schemas/Payment'
monthly:
type: object
additionalProperties:
$ref: '#/components/schemas/Payment'
additionalProperties: false
isDirty:
type: boolean
warningMessage:
type: string
nullable: true
contacts:
type: array
items:
$ref: '#/components/schemas/Contact'
nullable: true
instantBindStatus:
$ref: '#/components/schemas/InstantBindStatus'
bindStatus:
$ref: '#/components/schemas/BindStatus'
additionalProperties: false
Exposure:
type: object
properties:
classCode:
type: string
description: State defined class code
nullable: true
payroll:
type: integer
description: Payroll amount of the class code.
format: int32
additionalProperties: false
ValidationProblemDetails:
type: object
properties:
errors:
type: object
additionalProperties:
type: array
items:
type: string
nullable: true
type:
type: string
nullable: true
title:
type: string
nullable: true
status:
type: integer
format: int32
nullable: true
detail:
type: string
nullable: true
instance:
type: string
nullable: true
extensions:
type: object
additionalProperties:
nullable: true
nullable: true
additionalProperties: false
NotCoveredReason:
enum:
- NonPayment
- AuditNonCompliance
- NoEmployees
- Other
- NewBusiness
type: string
ProblemDetails:
type: object
properties:
type:
type: string
nullable: true
title:
type: string
nullable: true
status:
type: integer
format: int32
nullable: true
detail:
type: string
nullable: true
instance:
type: string
nullable: true
extensions:
type: object
additionalProperties:
nullable: true
nullable: true
additionalProperties: false
Contact:
required:
- email
- firstName
- lastName
type: object
properties:
firstName:
type: string
lastName:
type: string
phone:
type: string
nullable: true
email:
type: string
agentEnteredEmail:
type: string
nullable: true
additionalProperties: false
PriceIndicationRequest:
required:
- classCodes
- currentlyCovered
- state
- zip
type: object
properties:
state:
type: string
description: 'Use 2 digit state code:
[ AL, AK, AR, AZ, CA, CO, CT, DC, DE, FL, GA, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OK, OH, OR, PA, RI, SC, SD, TN, TX, UT, VA, VT, WA, WI, WV, WY, CW ]'
zip:
type: string
description: Five Digit zip code.
classCodes:
minItems: 1
type: array
items:
$ref: '#/components/schemas/Exposure'
description: List of class codes.
partnerAgentEmail:
type: string
description: Agent Email
nullable: true
contactEmail:
type: string
description: Insured email
nullable: true
currentlyCovered:
type: boolean
description: Are you currently covered by Worker's Compensation Policy if false then supply a reason
notCurrentlyCoveredReason:
$ref: '#/components/schemas/NotCoveredReason'
notCurrentlyCoveredDescription:
type: string
description: Provide description when notCurrentlyCoveredReason is ‘Other’ or when there is additional lapse information available.
nullable: true
claimCountYear1:
type: integer
description: Number of claims with your current carrier and term.
format: int32
nullable: true
claimCountYear2:
type: integer
description: Number of claims with your previous 1 year term.
format: int32
nullable: true
claimCountYear3:
type: integer
description: Number of claims with your previous 1 year term from 2 years ago.
format: int32
nullable: true
effectiveDate:
type: string
description: " Format YYYY-MM-DD\nMust be between tomorrow's date and 120 from current date\n (today + 120 days >= effectiveDate >= tomorrow)"
nullable: true
emod:
type: number
description: Experience Modificator Factor
format: double
nullable: true
blanketWaiver:
type: boolean
description: Boolean to apply a blanket Waiver
nullable: true
additionalProperties: false
QuoteDeclineResponse:
type: object
properties:
declineReasons:
type: array
items:
type: string
nullable: true
bindStatus:
$ref: '#/components/schemas/BindStatus'
additionalProperties: false
Payment:
type: object
properties:
premiumAmount:
type: integer
format: int32
surchargeAmount:
type: integer
format: int32
nullable: true
feeAmount:
type: integer
format: int32
nullable: true
totalAmount:
type: integer
format: int32
readOnly: true
additionalProperties: false
StateQuote:
required:
- catastrophe
- classPremium
- expenseConstant
- experienceModifier
- experienceModifierInput
- minimumPremium
- modifiedPremium
- policyTotalEstimatedCost
- premiumDiscount
- scheduleModifier
- scheduleModifierFactor
- standardPremium
- state
- subjectPremium
- taxesAndAssessments
- territoryModifier
- terrorism
- totalEstimatedPremium
- totalTaxesAndAssessments
type: object
properties:
catastropheRate:
type: number
format: double
nullable: true
deductible:
type: integer
format: int32
nullable: true
experienceModifierInput:
type: number
format: double
scheduleModifierFactor:
type: number
format: double
state:
type: string
terrorismRiskInsuranceAct:
type: number
format: double
nullable: true
premiumDiscountRate:
type: number
format: double
nullable: true
territoryModifierFactor:
type: number
format: double
nullable: true
balanceToMinimumPremium:
type: integer
format: int32
nullable: true
dividendFactor:
type: number
format: double
nullable: true
catastrophe:
type: number
format: double
classPremium:
type: number
format: double
expenseConstant:
type: number
format: double
experienceModifier:
type: number
format: double
liabilityLimits:
type: integer
format: int32
nullable: true
minimumPremium:
type: integer
format: int32
modifiedPremium:
type: integer
format: int32
policyTotalEstimatedCost:
type: number
format: double
premiumDiscount:
type: integer
format: int32
scheduleModifier:
type: number
format: double
standardPremium:
type: integer
format: int32
subjectPremium:
type: integer
format: int32
taxesAndAssessments:
type: array
items:
$ref: '#/components/schemas/TaxDetails'
totalTaxesAndAssessments:
type: number
format: double
terrorism:
type: number
format: double
totalEstimatedPremium:
type: number
format: double
blanketWaiver:
type: integer
format: int32
nullable: true
specificWaiver:
type: integer
format: int32
nullable: true
territoryModifier:
type: integer
format: int32
additionalProperties: false
securitySchemes:
bearer:
type: http
description: JWT Authorization header using the Bearer scheme. Enter token
scheme: Bearer