duck-creek Policies API
Insurance policy lifecycle management
Insurance policy lifecycle management
openapi: 3.1.0
info:
title: Duck Creek Policy Administration Billing Policies API
description: Duck Creek Policy Administration API enables product configuration, premium calculation, policy lifecycle management, and policy issuance for P&C and specialty insurance carriers. Duck Creek Anywhere provides 2,600+ RESTful APIs across all Duck Creek applications using open standards. Supports end-to-end policy management from quoting through renewal.
version: 1.0.0
contact:
name: Duck Creek Support
url: https://www.duckcreek.com/customer-support/
license:
name: Duck Creek Terms of Use
url: https://www.duckcreek.com/duck-creek-terms-use/
servers:
- url: https://api.duckcreek.com/v1
description: Duck Creek API Production
security:
- oauth2: []
tags:
- name: Policies
description: Insurance policy lifecycle management
paths:
/policies:
get:
operationId: listPolicies
summary: List insurance policies
description: Returns a paginated list of insurance policies. Supports filtering by policy status, product type, effective date range, and insured name.
tags:
- Policies
parameters:
- name: status
in: query
description: Filter by policy status
schema:
type: string
enum:
- QUOTED
- IN_FORCE
- CANCELLED
- EXPIRED
- PENDING_CANCEL
- RENEWAL
- name: productCode
in: query
description: Filter by insurance product code
schema:
type: string
- name: effectiveAfter
in: query
description: Filter policies effective on or after this date (ISO 8601)
schema:
type: string
format: date
- name: effectiveBefore
in: query
description: Filter policies effective on or before this date
schema:
type: string
format: date
- name: insuredName
in: query
description: Filter by insured name (partial match)
schema:
type: string
- name: limit
in: query
schema:
type: integer
default: 50
maximum: 200
- name: offset
in: query
schema:
type: integer
default: 0
responses:
'200':
description: List of policies
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createPolicy
summary: Create a new policy
description: Issues a new insurance policy. The policy must first be quoted and underwriting requirements must be satisfied before issuance.
tags:
- Policies
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyRequest'
responses:
'201':
description: Policy created
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
'400':
$ref: '#/components/responses/BadRequest'
'422':
description: Unprocessable — underwriting requirements not met
/policies/{policyId}:
get:
operationId: getPolicy
summary: Get policy details
description: Returns full details for a specific insurance policy.
tags:
- Policies
parameters:
- name: policyId
in: path
required: true
description: Unique policy identifier
schema:
type: string
responses:
'200':
description: Policy details
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updatePolicy
summary: Update policy (endorsement)
description: Modifies an in-force policy through an endorsement transaction.
tags:
- Policies
parameters:
- name: policyId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyUpdateRequest'
responses:
'200':
description: Policy updated
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
/policies/{policyId}/cancel:
post:
operationId: cancelPolicy
summary: Cancel a policy
description: Cancels an in-force insurance policy with a specified reason and effective date.
tags:
- Policies
parameters:
- name: policyId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancellationRequest'
responses:
'200':
description: Policy cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
/policies/{policyId}/renew:
post:
operationId: renewPolicy
summary: Renew a policy
description: Initiates the renewal process for an expiring policy.
tags:
- Policies
parameters:
- name: policyId
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
renewalEffectiveDate:
type: string
format: date
responses:
'200':
description: Renewal initiated
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
components:
schemas:
PolicySummary:
type: object
properties:
policyId:
type: string
policyNumber:
type: string
status:
type: string
enum:
- QUOTED
- IN_FORCE
- CANCELLED
- EXPIRED
- PENDING_CANCEL
- RENEWAL
productCode:
type: string
lineOfBusiness:
type: string
effectiveDate:
type: string
format: date
expirationDate:
type: string
format: date
insuredName:
type: string
totalPremium:
type: number
format: double
PolicyUpdateRequest:
type: object
properties:
endorsementEffectiveDate:
type: string
format: date
reason:
type: string
coverages:
type: array
items:
$ref: '#/components/schemas/CoverageRequest'
Endorsement:
type: object
properties:
endorsementId:
type: string
type:
type: string
effectiveDate:
type: string
format: date
premiumChange:
type: number
CancellationRequest:
type: object
required:
- cancellationReason
- effectiveDate
properties:
cancellationReason:
type: string
enum:
- INSURED_REQUEST
- NON_PAYMENT
- UNDERWRITING
- COMPANY_CANCELLED
effectiveDate:
type: string
format: date
notes:
type: string
PolicyRequest:
type: object
required:
- productCode
- insured
- effectiveDate
properties:
productCode:
type: string
quoteId:
type: string
insured:
$ref: '#/components/schemas/Insured'
effectiveDate:
type: string
format: date
expirationDate:
type: string
format: date
coverages:
type: array
items:
$ref: '#/components/schemas/CoverageRequest'
agentCode:
type: string
CoverageRequest:
type: object
required:
- coverageCode
properties:
coverageCode:
type: string
limit:
type: number
deductible:
type: number
Coverage:
type: object
properties:
coverageCode:
type: string
coverageName:
type: string
limit:
type: number
deductible:
type: number
premium:
type: number
Insured:
type: object
required:
- name
properties:
name:
type: string
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
dateOfBirth:
type: string
format: date
ssn:
type: string
description: Social security number (masked)
address:
$ref: '#/components/schemas/Address'
phone:
type: string
email:
type: string
format: email
Policy:
allOf:
- $ref: '#/components/schemas/PolicySummary'
- type: object
properties:
insured:
$ref: '#/components/schemas/Insured'
coverages:
type: array
items:
$ref: '#/components/schemas/Coverage'
endorsements:
type: array
items:
$ref: '#/components/schemas/Endorsement'
underwritingMessages:
type: array
items:
type: string
writingCompany:
type: string
agentCode:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
Address:
type: object
properties:
street1:
type: string
street2:
type: string
city:
type: string
state:
type: string
pattern: ^[A-Z]{2}$
zipCode:
type: string
country:
type: string
default: US
Error:
type: object
properties:
code:
type: string
message:
type: string
details:
type: array
items:
type: string
PolicyList:
type: object
properties:
total:
type: integer
offset:
type: integer
policies:
type: array
items:
$ref: '#/components/schemas/PolicySummary'
responses:
Unauthorized:
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0 for Duck Creek Anywhere API authentication
flows:
clientCredentials:
tokenUrl: https://api.duckcreek.com/oauth/token
scopes:
policies:read: Read policy data
policies:write: Create and modify policies
claims:read: Read claim data
claims:write: Create and update claims
billing:read: Read billing data