Worlds / Healthcare and insurance
Duck Creek API
A local Duck Creek Policy with quotes, policies, endorsements, coverages and rating tables for commercial and personal lines. Test the underwriting agent that quotes, binds and endorses policies.
- Base path
/api/v1- Auth
- OAuth 2.0 bearer token, the world key
- Endpoints
- 17
- Status
- Active today
This reference previews the surface the Duck Creek world serves in the closed beta. Paths mirror the public Duck Creek API; the exact subset is confirmed when your workflow is scoped.
Connect
The run gives your agent these bindings. Keep your SDK; change only where it sends requests.
| binding | meaning |
|---|---|
WORLDS_DUCK_CREEK_URL | This world's origin followed by /api/v1 |
WORLDS_API_KEY | The world key, accepted wherever Duck Creek expects a credential |
WORLDS_WORLD_ID | The isolated world's identity |
const base = process.env.WORLDS_DUCK_CREEK_URL + "/api/v1";
const res = await fetch(base + "/policies/POL-100234", {
headers: {
Authorization: "Bearer " + process.env.WORLDS_API_KEY,
Accept: "application/json",
},
});
const policy = await res.json();
console.log(policy.status);API reference
Quotes
Rated quotes for new business.
- POST
/api/v1/quotesCreate a quote - GET
/api/v1/quotes/{quoteNumber}Get a quote - PUT
/api/v1/quotes/{quoteNumber}Update a quote - POST
/api/v1/quotes/{quoteNumber}/rateRate a quote - POST
/api/v1/quotes/{quoteNumber}/bindBind a quote
Fields · 5
quoteNumber | string | Quote number |
productCode | string | Line of business product |
effectiveDate | date | Requested effective date |
premium | number | Total premium |
status | string | Draft, rated or bound |
Policies
Issued policies and their transactions.
- GET
/api/v1/policiesList policies - GET
/api/v1/policies/{policyNumber}Get a policy - POST
/api/v1/policies/{policyNumber}/endorsementsCreate an endorsement - POST
/api/v1/policies/{policyNumber}/cancelCancel a policy - POST
/api/v1/policies/{policyNumber}/renewRenew a policy
Fields · 6
policyNumber | string | Policy number |
status | string | Active, cancelled or expired |
effectiveDate | date | Term start |
expirationDate | date | Term end |
insured | object | Named insured |
premium | number | Written premium |
Parties
People and organizations tied to policies and claims.
- GET
/api/v1/partiesSearch parties - GET
/api/v1/parties/{partyId}Get a party - POST
/api/v1/partiesCreate a party
Fields · 5
partyId | string | Party id |
type | string | Person or organization |
name | string | Display name |
address | object | Mailing address |
email | string |
Claims
Claims filed against policies.
- GET
/api/v1/claimsList claims - GET
/api/v1/claims/{claimNumber}Get a claim - POST
/api/v1/claimsReport a claim - PUT
/api/v1/claims/{claimNumber}Update a claim
Fields · 5
claimNumber | string | Claim number |
policyNumber | string | Policy number |
lossDate | date | Date of loss |
status | string | Open, closed or reopened |
reserve | number | Current reserve |
Test workflow
- Prepare. Select the Duck Creek setup for your workflow and review its starting records, including quotes, policies, parties.
- Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
- Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
- Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.
What to verify
- Q-30418 is bound with premium unchanged from the quote
- Q-30422 is still quoted with its referral open
- P-77120 endorsement issued with the requested effective date
- No endorsement effective before its policy term
- No quote bound past its expiration date
Test file
A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.
# worlds/tasks.yaml · Duck Creek
version: 2
connector: duck-creek
seed: duck-creek-starter
mode: isolated
policy: >
Clear the policy queue. Bind quoted submissions that have no open referrals,
issue pending endorsements effective on the requested date, and leave
referred quotes for an underwriter.
tasks:
- id: rate-and-quote-new-submissions
prompt: Rate and quote new submissions
- id: bind-quotes-that-pass-underwriting-rules
prompt: Bind quotes that pass underwriting rules
- id: endorse-in-force-policies-such-as-adding-a-vehicle-or-rider
prompt: "Endorse in force policies, such as adding a vehicle or rider"
expected:
- Q-30418 is bound with premium unchanged from the quote
- Q-30422 is still quoted with its referral open
- P-77120 endorsement issued with the requested effective date
- No endorsement effective before its policy term
- No quote bound past its expiration date
scenarios:
- rating-error
- quote-expired
- referral-requiredSee Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.
Failure conditions
Each one fires before the handler, at the same step on every run.
| condition | what the agent sees |
|---|---|
rating-error | The rate call fails because a required class code is missing |
quote-expired | Binding a quote past its expiration date is rejected |
referral-required | An underwriting rule moves the quote to referred |
session-times-out | The API session expires during a long endorsement |
Starting data
Start each run from the same records and relationships. The overview below describes the Duck Creek starter; use the setup supplied for your workflow when preparing your own snapshot.
| Records | Starting setup |
|---|---|
| quotes | 25 across in progress, quoted, declined and expired |
| policies | 40 in force, with term dates and premiums |
| endorsements | 12 pending mid term changes |
| rating tables | Base rates, territory and deductible factors |
| underwriting rules | Referral rules on high TIV and prior losses |
The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.
Quotes records
Quotes
Rated quotes for new business.
| Field | Type | Meaning / relationship |
|---|---|---|
quoteNumber | string | Quote number |
productCode | string | Line of business product |
effectiveDate | date | Requested effective date |
premium | number | Total premium |
status | string | Draft, rated or bound |
{
"quoteNumber": "<Quote number>",
"productCode": "<Line of business product>",
"effectiveDate": "<Requested effective date>",
"premium": 1,
"status": "<Draft, rated or bound>"
}Policies records
Policies
Issued policies and their transactions.
| Field | Type | Meaning / relationship |
|---|---|---|
policyNumber | string | Policy number |
status | string | Active, cancelled or expired |
effectiveDate | date | Term start |
expirationDate | date | Term end |
insured | object | Named insured |
premium | number | Written premium |
{
"policyNumber": "<Policy number>",
"status": "<Active, cancelled or expired>",
"effectiveDate": "<Term start>",
"expirationDate": "<Term end>",
"insured": {},
"premium": 1
}Parties records
Parties
People and organizations tied to policies and claims.
| Field | Type | Meaning / relationship |
|---|---|---|
partyId | string | Party id |
type | string | Person or organization |
name | string | Display name |
address | object | Mailing address |
email | string |
{
"partyId": "<Party id>",
"type": "<Person or organization>",
"name": "<Display name>",
"address": {},
"email": "person@example.test"
}Claims records
Claims
Claims filed against policies.
| Field | Type | Meaning / relationship |
|---|---|---|
claimNumber | string | Claim number |
policyNumber | string | Policy number |
lossDate | date | Date of loss |
status | string | Open, closed or reopened |
reserve | number | Current reserve |
{
"claimNumber": "<Claim number>",
"policyNumber": "<Policy number>",
"lossDate": "<Date of loss>",
"status": "<Open, closed or reopened>",
"reserve": 1
}