Generate a will from URL parameters
The Succession Wills LLM API lets an agent or developer create a complete Last Will and Testament by providing the same fields used in our Will Builder — directly in a URL query string. This page is the human- and machine-readable specification.
Quickstart
Minimum call for a married person with one child, one executor, and residue to spouse then children:
Example request
GET https://app.successionwills.com/api/v1/llm?first_name=John&last_name=Smith&address_street=123%20Maple%20Street&address_city=Springfield&address_state=IL&address_country=United%20States&address_zip=62701&marital_status=1&spouse_first_name=Sarah&spouse_last_name=Smith&has_children=true&children=%5B%7B%22first_name%22%3A%22Emily%22%2C%22last_name%22%3A%22Smith%22%7D%5D&executors=%5B%7B%22first_name%22%3A%22David%22%2C%22last_name%22%3A%22Wilson%22%2C%22relationship%22%3A%22friend%22%7D%5D&residue_bens=%5B%7B%22selection%22%3A%22spouse%22%2C%22place%22%3A0%7D%2C%7B%22selection%22%3A%22children%22%2C%22place%22%3A1%7D%5D
Readable (unencoded) form of the same request:
https://app.successionwills.com/api/v1/llm
?first_name=John
&last_name=Smith
&address_street=123 Maple Street
&address_city=Springfield
&address_state=IL
&address_country=United States
&address_zip=62701
&marital_status=1
&spouse_first_name=Sarah
&spouse_last_name=Smith
&has_children=true
&children=[{"first_name":"Emily","last_name":"Smith"}]
&executors=[{"first_name":"David","last_name":"Wilson","relationship":"friend"}]
&residue_bens=[{"selection":"spouse","place":0},{"selection":"children","place":1}]
API status
https://app.successionwills.com/api/v1/llm
(also via https://successionwills.com/api/v1/llm).
Browser requests redirect to a clean WillDocument page; add format=json for an API payload.
Generate will
Accepts Will Builder variables as query parameters, creates a will document, and redirects
to a clean page that renders it with the same WillDocument component as the Will Builder
(no nav, buttons, or marketing chrome). Use format=json for a machine response.
Alternative path style
Some clients may prefer a slash-prefixed style for logging. Both forms are reserved:
https://app.successionwills.com/api/v1/llm?first_name=John&last_name=Smith&...
https://app.successionwills.com/api/v1/llm/first_name=John&last_name=Smith&...
Prefer the standard query-string form (?key=value) for maximum HTTP client compatibility.
Parameter encoding
- Scalars — plain query values:
first_name=John,has_children=true,marital_status=1 - Booleans —
true/false(lowercase) - Numbers — unquoted digits:
marital_status=1,amount=10000 - Arrays & objects — JSON text, then URL-encoded in the query string
- Spaces — encode as
%20(or+)
[ ] { } " unencoded in production URLs.
Response shape
Success responses follow the Succession Wills API envelope:
{
"status": 200,
"success": true,
"data": {
"document_id": "690f6f706504a191df2a2975",
"document_progress": "standard_complete",
"download_pdf": "https://app.successionwills.com/api/v1/documents/{id}/download-pdf",
"fields_applied": { "...": "echo of normalized input" }
}
}
Required fields
These fields are required for a standard complete will (same gates as the Will Builder).
| Parameter | Type | Required | Description |
|---|---|---|---|
first_name |
string | required | Testator first name |
last_name |
string | required | Testator last name |
address_street |
string | required | Street address |
address_city |
string | required | City |
address_state |
string | required | State / province (e.g. IL, Ontario) |
address_country |
string | required | Usually United States or Canada |
address_zip |
string | required | ZIP / postal code |
marital_status |
number | required | See enums |
has_children |
boolean | required | true or false |
executors |
JSON array | required | At least one executor |
residue_bens |
JSON array | required | At least one residue beneficiary tier |
Conditionally required
| When | Also require |
|---|---|
marital_status is 1, 3, or 4 |
spouse_first_name, spouse_last_name |
has_children=true |
children array with names |
include_minors=true |
first_name_primary_guardian, last_name_primary_guardian, primary_guardian_relationship |
Personal & address fields
| Parameter | Type | Required | Notes |
|---|---|---|---|
first_name | string | required | Testator |
middle_name | string | optional | |
last_name | string | required | |
aka_name | string | optional | Also known as |
address_street | string | required | |
address_city | string | required | |
address_state | string | required | Jurisdiction |
address_country | string | required | |
address_zip | string | required | |
marital_status | number | required | 1–4 |
spouse_first_name | string | conditional | If married / common-law / soon |
spouse_last_name | string | conditional | |
spouse_middle_name | string | optional | |
spouse_aka_name | string | optional | |
spouse_mirror | boolean | optional | Mirror will for spouse |
Family & guardians
| Parameter | Type | Required | Notes |
|---|---|---|---|
has_children | boolean | required | |
children | JSON array | conditional | See object shape below |
include_minors | boolean | optional | Triggers guardian fields |
include_step_children | boolean | optional | |
first_name_primary_guardian | string | conditional | |
last_name_primary_guardian | string | conditional | |
primary_guardian | string | optional | Full name (recommended) |
primary_guardian_relationship | string | conditional | e.g. brother |
first_name_backup_guardian | string | optional | |
last_name_backup_guardian | string | optional | |
backup_guardian | string | optional | Full name |
backup_guardian_relationship | string | optional |
children[] object
{
"first_name": "Emily",
"last_name": "Smith",
"name": "Emily Smith",
"exclude": false,
"exclude_issue": false,
"order": 1
}
Executors
executors is required and must contain at least one person. sub_executors is optional.
// executors / sub_executors item
{
"first_name": "David",
"last_name": "Wilson",
"name": "David Wilson",
"email": "david@example.com",
"relationship": "friend",
"order": 1
}
| Parameter | Type | Required | Notes |
|---|---|---|---|
executors | JSON array | required | ≥ 1 |
sub_executors | JSON array | optional | Substitutes / backups |
manner_of_sub | string | optional | sub (default) or fill |
Beneficiaries (residue)
residue_bens defines who receives the residue of the estate, ordered by place
(lower number = higher priority). Each tier is either a shortcut selection or a custom others group.
// Common pattern: spouse, then children
[
{ "selection": "spouse", "place": 0 },
{ "selection": "children", "place": 1 }
]
// Custom percentage split
[
{
"selection": "other",
"place": 0,
"others": [
{
"type": "Person",
"name": "Jane Doe",
"first_name": "Jane",
"last_name": "Doe",
"relationship": "friend",
"percent": 50,
"consequence": "Gift to Issue"
},
{
"type": "Charity",
"name": "Red Cross",
"percent": 50,
"consequence": ""
}
]
}
]
selection values: spouse, children, other.
Optional advanced fields
| Parameter | Type | Description |
|---|---|---|
burial_selection | string | buried, cremated, executors_decide |
funeral_instructions | string | Free text |
has_pets | boolean | |
pets | JSON array | { first_name, last_name, description } (name / type) |
pet_guardian | string | Full name |
pet_guardian_relationship | string | |
pet_fund | boolean | |
pet_fund_amount | number | |
cash_bens | JSON array | Cash legacies |
bequests | JSON array | Specific gifts |
age_benchmarks | JSON array | [{ "age": 25 }] |
wedlock_requirement_enable | boolean | |
wedlock_requirement | string | See enums |
attorneys | JSON array | Power of Attorney agents |
cash_bens[] / bequests[]
// cash legacy
{
"type": "Person",
"first_name": "John",
"last_name": "Doe",
"name": "John Doe",
"relationship": "friend",
"amount": 10000,
"consequence": "Gift to Issue",
"order": 0
}
// specific bequest
{
"type": "Person",
"first_name": "John",
"last_name": "Doe",
"relationship": "child",
"description": "Grandfather's gold watch",
"consequence": "Gift to Issue"
}
Enums
| Field | Allowed values |
|---|---|
marital_status |
1 Married · 2 Not Married · 3 Getting Married Soon · 4 Common-Law |
burial_selection |
buried, cremated, executors_decide |
manner_of_sub |
sub, fill |
Person/Charity type |
Person, Charity |
consequence |
"", Lapse, Gift to Issue |
Residue selection |
spouse, children, other |
relationship (common) |
spouse, child, parent, sibling, friend, other (lowercase preferred) |
Full examples
1. Unmarried, no children
https://app.successionwills.com/api/v1/llm
?first_name=Alex
&last_name=Rivera
&address_street=88 Oak Ave
&address_city=Chicago
&address_state=IL
&address_country=United States
&address_zip=60601
&marital_status=2
&has_children=false
&executors=[{"first_name":"Pat","last_name":"Lee","relationship":"friend"}]
&residue_bens=[{"selection":"other","place":0,"others":[{"type":"Person","name":"Pat Lee","percent":100,"relationship":"friend","consequence":"Lapse"}]}]
2. Married with minor children + guardian
https://app.successionwills.com/api/v1/llm
?first_name=John
&last_name=Smith
&address_street=123 Maple Street
&address_city=Toronto
&address_state=Ontario
&address_country=Canada
&address_zip=M5V%202T6
&marital_status=1
&spouse_first_name=Sarah
&spouse_last_name=Smith
&has_children=true
&include_minors=true
&children=[{"first_name":"Emily","last_name":"Smith"},{"first_name":"Noah","last_name":"Smith"}]
&first_name_primary_guardian=Robert
&last_name_primary_guardian=Johnson
&primary_guardian=Robert%20Johnson
&primary_guardian_relationship=brother
&executors=[{"first_name":"Sarah","last_name":"Smith","relationship":"spouse"}]
&sub_executors=[{"first_name":"Robert","last_name":"Johnson","relationship":"brother"}]
&residue_bens=[{"selection":"spouse","place":0},{"selection":"children","place":1}]
&burial_selection=executors_decide
3. curl
curl -G 'https://app.successionwills.com/api/v1/llm' \
--data-urlencode 'first_name=John' \
--data-urlencode 'last_name=Smith' \
--data-urlencode 'address_street=123 Maple Street' \
--data-urlencode 'address_city=Springfield' \
--data-urlencode 'address_state=IL' \
--data-urlencode 'address_country=United States' \
--data-urlencode 'address_zip=62701' \
--data-urlencode 'marital_status=1' \
--data-urlencode 'spouse_first_name=Sarah' \
--data-urlencode 'spouse_last_name=Smith' \
--data-urlencode 'has_children=true' \
--data-urlencode 'children=[{"first_name":"Emily","last_name":"Smith"}]' \
--data-urlencode 'executors=[{"first_name":"David","last_name":"Wilson","relationship":"friend"}]' \
--data-urlencode 'residue_bens=[{"selection":"spouse","place":0},{"selection":"children","place":1}]'
Errors
Error responses use the same envelope with success: false:
{
"status": 400,
"success": false,
"data": {
"code": 400,
"message": "Missing required field: executors",
"missing": ["executors"]
}
}
| Status | Meaning |
|---|---|
400 | Validation / missing required fields / invalid JSON |
401 | Authentication required (when API keys are enabled) |
429 | Rate limited |
500 | Server / generation failure |
503 | Endpoint not enabled yet |
Machine-readable resources
For crawlers and LLM tools:
/llms.txt— concise plain-text summary/schemas/openapi.json— OpenAPI 3.1 description/schemas/will-fields.json— field dictionary/sitemap.xml·/robots.txt