Introduction
A developer-first infrastructure layer for construction payment compliance. Manage organizations, projects, notices, waivers, pay applications, documents, and delivery orders through a versioned REST API.
This documentation aims to provide all the information you need to work with our API.
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer Bearer {YOUR_BEARER_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
Authenticate using a Sanctum personal access token. Include it as Authorization: Bearer <token>. Most endpoints also require organization context, supplied via the X-Organization-UUID header, which tells the API which organization's credits to draw from and which organization's data to scope the request to. Organization context is resolved in this order: (1) the org:<uuid> ability on the token, if the token was restricted to a single organization when it was created, (2) the X-Organization-UUID header, (3) the requesting user's first organization membership. If none of these resolve to an organization the user belongs to, the API returns a 422 error.
Audit Logs
Read-only record of who changed what.
List audit log entries
requires authentication
Paginated record of who changed what, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/audit-logs?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&action=updated&auditable_type=notice&auditable_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/audit-logs"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"action": "updated",
"auditable_type": "notice",
"auditable_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "6d60b779-947b-4d7f-80e5-fe876825f03f",
"organization_id": "4946c450-68b3-4330-918c-96c3142cb979",
"user_id": null,
"action": "created",
"auditable_type": "App\\Domain\\Organizations\\Models\\Organization",
"auditable_id": 681,
"old_values": null,
"new_values": {
"name": "Cronin, Dare and Hauck"
},
"ip_address": "153.39.9.254",
"user_agent": "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_5) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/83.0.4512.11 Safari/532.2 Edg/83.01091.24",
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "0442801b-3b2a-4ac2-96a0-ba7bdba05709",
"organization_id": "37d6e971-b726-40ef-a5d0-a8cd28bbfbbc",
"user_id": null,
"action": "deleted",
"auditable_type": "App\\Domain\\Organizations\\Models\\Organization",
"auditable_id": 482,
"old_values": null,
"new_values": {
"name": "Dibbert Inc"
},
"ip_address": "27.135.245.109",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_7 rv:6.0) Gecko/20210106 Firefox/35.0",
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve an audit log entry
requires authentication
Returns a single audit entry by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/audit-logs/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/audit-logs/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "2cc86c0b-23cd-44bc-a1fb-626296daba7b",
"organization_id": "b8cf1083-8a52-4447-ae92-644c348c4e57",
"user_id": null,
"action": "created",
"auditable_type": "App\\Domain\\Organizations\\Models\\Organization",
"auditable_id": 681,
"old_values": null,
"new_values": {
"name": "Cronin, Dare and Hauck"
},
"ip_address": "153.39.9.254",
"user_agent": "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_5) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/83.0.4512.11 Safari/532.2 Edg/83.01091.24",
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Billing
Subscription plans and Stripe billing.
List billing plans
requires authentication
Available subscription plans with pricing and monthly credit grants.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/billing/plans" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/billing/plans"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"plans": [
{
"key": "growth",
"label": "Growth",
"monthly_credits": 250,
"cls_eligible": true
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a billing setup intent
requires authentication
Returns a Stripe SetupIntent client secret so the client can save a card via Stripe Elements.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/billing/setup-intent" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/billing/setup-intent"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"organization_uuid": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"client_secret": "seti_..._secret_...",
"publishable_key": "pk_..."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Subscribe to a plan
requires authentication
Subscribes the organization to a monthly plan using a saved or supplied payment method.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/billing/subscribe" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"plan\": \"growth\",
\"interval\": \"monthly\",
\"payment_method\": \"pm_1Q1abcXyz\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/billing/subscribe"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"plan": "growth",
"interval": "monthly",
"payment_method": "pm_1Q1abcXyz"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"organization_uuid": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"plan": "growth",
"status": "active",
"active": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Cancel the subscription
requires authentication
Cancels the active subscription at period end.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/billing/cancel" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/billing/cancel"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"organization_uuid": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"cancelled": true,
"ends_at": "2026-10-01T00:00:00+00:00"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Stripe billing callback
Inbound Stripe webhook. Signature-verified; not called by API clients.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/webhooks/stripe" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/stripe"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"received": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Contacts
People attached to organizations and parties.
List contacts
requires authentication
Paginated contacts visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/contacts?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&division_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&is_active=1&search=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/contacts"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"is_active": "1",
"search": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "00557cfc-01e0-4325-a697-7756508b6a8b",
"organization_id": "f0be03f8-988d-4347-9272-c9794db598b7",
"division_id": null,
"first_name": "Audra",
"last_name": "Crooks",
"email": "gulgowski.asia@example.com",
"phone": "6469808414",
"title": null,
"type": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "54be3bea-f359-4953-86e5-63c2c631add6",
"organization_id": "840b95ec-4bdb-4dbb-901b-01d6aa1f5713",
"division_id": null,
"first_name": "Roderick",
"last_name": "Leffler",
"email": "schultz.audrey@example.org",
"phone": null,
"title": null,
"type": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a contact
requires authentication
Creates a contact and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/contacts" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"first_name\": \"Jane\",
\"last_name\": \"Smith\",
\"email\": \"ops@example.com\",
\"phone\": \"512-555-0100\",
\"title\": \"Project Manager\",
\"type\": \"primary\",
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/contacts"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"first_name": "Jane",
"last_name": "Smith",
"email": "ops@example.com",
"phone": "512-555-0100",
"title": "Project Manager",
"type": "primary",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "95b40a09-7be2-4fa7-b8ba-215e3f299ad5",
"organization_id": "82164c53-36c8-44a1-800f-3e60f9730490",
"division_id": null,
"first_name": "Christelle",
"last_name": "Bailey",
"email": null,
"phone": "6290005642",
"title": "Geographer",
"type": "primary",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a contact
requires authentication
Returns a single contact by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "63004088-008e-4d17-923e-698133e66c64",
"organization_id": "d517c34c-8020-48e3-a529-612d95b509d7",
"division_id": null,
"first_name": "Morgan",
"last_name": "Hirthe",
"email": "emelie.baumbach@example.net",
"phone": "1607257447",
"title": null,
"type": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a contact
requires authentication
Applies a partial update to a contact and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"first_name\": \"Jane\",
\"last_name\": \"Smith\",
\"email\": \"ops@example.com\",
\"phone\": \"512-555-0100\",
\"title\": \"Project Manager\",
\"type\": \"primary\",
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"first_name": "Jane",
"last_name": "Smith",
"email": "ops@example.com",
"phone": "512-555-0100",
"title": "Project Manager",
"type": "primary",
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "08a8a183-f686-4b63-b0e2-12037e76a415",
"organization_id": "4ea63b38-5f87-4001-8dcb-d34cd3557b0a",
"division_id": null,
"first_name": "Christelle",
"last_name": "Bailey",
"email": null,
"phone": "6290005642",
"title": "Geographer",
"type": "primary",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a contact
requires authentication
Soft-deletes the contact.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/contacts/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Contact deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Credits
Balance, price previews and ad-hoc credit purchases.
Get credit balance
requires authentication
Spendable balances (free, CLS-eligible) plus credits on hold -- set aside for a charge whose final amount is not known yet, such as full-service postage -- and what each hold is for. Held credits are not spendable; they are charged or returned when the work completes.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/credits/balance" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/credits/balance"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"organization_uuid": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"balance": {
"total": 4,
"free": 0,
"cls_eligible": 4
},
"held": 36,
"holds": [
{
"id": "5c1d…",
"amount": 36,
"description": "Postage for 3 recipients — Riverbend Medical Office",
"event_type": "fulfillment_postage",
"for": {
"type": "fulfillment_request",
"id": "7c9de01e-29ee-4814-a9c8-25527412f041"
},
"created_at": "2026-10-04T20:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Preview an event price
requires authentication
Returns the credit cost of a billable event without charging it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/credits/price" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"event_type\": \"mail_sending\",
\"state\": \"CA\",
\"recipients\": 1,
\"document_type\": \"notice\",
\"fulfillment_scope\": \"research\",
\"order_type\": \"mail\",
\"mail_class\": \"certified\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/credits/price"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"event_type": "mail_sending",
"state": "CA",
"recipients": 1,
"document_type": "notice",
"fulfillment_scope": "research",
"order_type": "mail",
"mail_class": "certified"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"event_type": "mail_sending",
"credits": 2,
"cls_billable": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Purchase credits
requires authentication
Buys ad-hoc CLS-eligible credits (USD 1 = 1 credit) against the org default payment method.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/credits/purchase" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"credits\": 100
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/credits/purchase"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"credits": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"purchased": 100,
"balance": 350
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Divisions
Claimant identities. Every generated document is attributed to a division; the per-tier claimant cap applies here.
List divisions
requires authentication
Paginated divisions visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/divisions?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&is_active=1&search=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/divisions"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"is_active": "1",
"search": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "fd897fec-58cf-46c7-b86a-82815e3a521e",
"organization_id": "93943636-6427-426d-bc67-14600fdf8da1",
"name": "eius et",
"code": null,
"description": "Et fugiat sunt nihil accusantium.",
"address_line_1": "1582 Lexus Mount Apt. 498",
"address_line_2": "Apt. 724",
"city": "Lake Haven",
"state": "LA",
"zip": "19279",
"zip_plus_4": "5744",
"country_code": "US",
"phone": "0591350525",
"email": null,
"license_number": "LIC-915066",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "20df3f9e-f1ec-4165-8dd7-df4de2ba2ca6",
"organization_id": "43095bdf-93d1-4081-a123-b7e411e4e5ad",
"name": "est dignissimos",
"code": null,
"description": null,
"address_line_1": "11084 Palma Stream Apt. 368",
"address_line_2": null,
"city": "Artborough",
"state": "NV",
"zip": "18607-5439",
"zip_plus_4": null,
"country_code": "US",
"phone": "8474860372",
"email": null,
"license_number": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a division
requires authentication
Creates a division and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/divisions" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"name\": \"Acme Mechanical, Northwest Division\",
\"code\": \"NW\",
\"description\": \"Eius et animi quos velit et.\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"v\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"zip_plus_4\": \"1234\",
\"country_code\": \"US\",
\"phone\": \"512-555-0100\",
\"email\": \"ops@example.com\",
\"license_number\": \"LIC-558231\",
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/divisions"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"name": "Acme Mechanical, Northwest Division",
"code": "NW",
"description": "Eius et animi quos velit et.",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "v",
"city": "Austin",
"state": "CA",
"zip": "78701",
"zip_plus_4": "1234",
"country_code": "US",
"phone": "512-555-0100",
"email": "ops@example.com",
"license_number": "LIC-558231",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "1c8fda6d-3b76-4986-9c31-a7ae9474ad55",
"organization_id": "54f60b87-43dc-4960-80b9-a0c9b66ec1f8",
"name": "sunt nihil",
"code": "DIV-841",
"description": null,
"address_line_1": "78142 Nick Field",
"address_line_2": "Apt. 724",
"city": "Lake Haven",
"state": "LA",
"zip": "19279",
"zip_plus_4": "5744",
"country_code": "US",
"phone": "0591350525",
"email": null,
"license_number": "LIC-915066",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a division
requires authentication
Returns a single division by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "44084e8c-b20c-42a3-95ab-03e83396d28b",
"organization_id": "05fb656b-74f5-4a48-bdeb-54096eba65ac",
"name": "aut adipisci",
"code": "DIV-432",
"description": null,
"address_line_1": "38862 Ferne Locks Suite 058",
"address_line_2": "Apt. 067",
"city": "Lefflerhaven",
"state": "TX",
"zip": "58408-7043",
"zip_plus_4": null,
"country_code": "US",
"phone": "6912823169",
"email": "kconsidine@kshlerin.com",
"license_number": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a division
requires authentication
Applies a partial update to a division and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Acme Mechanical, Northwest Division\",
\"code\": \"NW\",
\"description\": \"Eius et animi quos velit et.\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"v\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"zip_plus_4\": \"1234\",
\"country_code\": \"US\",
\"phone\": \"512-555-0100\",
\"email\": \"ops@example.com\",
\"license_number\": \"LIC-558231\",
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Acme Mechanical, Northwest Division",
"code": "NW",
"description": "Eius et animi quos velit et.",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "v",
"city": "Austin",
"state": "CA",
"zip": "78701",
"zip_plus_4": "1234",
"country_code": "US",
"phone": "512-555-0100",
"email": "ops@example.com",
"license_number": "LIC-558231",
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "9e15853d-e4e0-418e-b0a6-a2f05a10055d",
"organization_id": "a351b06e-881f-42ce-a061-c5bc3905a1c3",
"name": "sunt nihil",
"code": "DIV-841",
"description": null,
"address_line_1": "78142 Nick Field",
"address_line_2": "Apt. 724",
"city": "Lake Haven",
"state": "LA",
"zip": "19279",
"zip_plus_4": "5744",
"country_code": "US",
"phone": "0591350525",
"email": null,
"license_number": "LIC-915066",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a division
requires authentication
Deletes the division. A division that is a project claimant cannot be deleted (422).
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/divisions/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Division deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Document Orders
Fulfillment orders (mail, filing, research, recording) with server-authoritative pricing.
List document orders
requires authentication
Paginated fulfillment orders visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/document-orders?status=architecto&billing_status=architecto&order_type=mail&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders"
);
const params = {
"status": "architecto",
"billing_status": "architecto",
"order_type": "mail",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "f0f775ca-33d3-4d8e-8709-07ddbc456431",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1288,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Macey Rempel PhD",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "1d8d3a1f-d666-490a-a3a1-805aaa81fbdd",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1392,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Prof. Juvenal O'Kon",
"address_line_1": "6750 Alfonso Causeway",
"address_line_2": null,
"city": "East Danielaborough",
"state": "DE",
"zip": "95083"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a document order
requires authentication
Orders fulfillment (mail / filing / research / recording) for a generated document. Price is computed server-side.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/document-orders" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"document_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"order_type\": \"mail\",
\"billing_method\": \"credit_balance\",
\"mail_class\": \"certified\",
\"recipient_name\": \"Property Owner LLC\",
\"recipient_address_line_1\": \"200 Main Street\",
\"recipient_address_line_2\": \"b\",
\"recipient_city\": \"Austin\",
\"recipient_state\": \"TX\",
\"recipient_zip\": \"78702\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"document_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"order_type": "mail",
"billing_method": "credit_balance",
"mail_class": "certified",
"recipient_name": "Property Owner LLC",
"recipient_address_line_1": "200 Main Street",
"recipient_address_line_2": "b",
"recipient_city": "Austin",
"recipient_state": "TX",
"recipient_zip": "78702"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "dddaac1e-8a19-4a13-9a07-8b74f4a33096",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1288,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Macey Rempel PhD",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a document order
requires authentication
Returns a single order by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "dc59e141-1854-4a8a-a966-e87b18d6c188",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1118,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Miss Pearl Hauck",
"address_line_1": "99279 Kenyatta Knoll",
"address_line_2": null,
"city": "Careymouth",
"state": "IA",
"zip": "64310-6432"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a document order
requires authentication
Edits recipient / mail-class details while the order is still editable.
Example request:
curl --request PATCH \
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"recipient_name\": \"Property Owner LLC\",
\"recipient_address_line_1\": \"200 Main Street\",
\"recipient_address_line_2\": \"b\",
\"recipient_city\": \"Austin\",
\"recipient_state\": \"TX\",
\"recipient_zip\": \"78702\",
\"mail_class\": \"certified\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"recipient_name": "Property Owner LLC",
"recipient_address_line_1": "200 Main Street",
"recipient_address_line_2": "b",
"recipient_city": "Austin",
"recipient_state": "TX",
"recipient_zip": "78702",
"mail_class": "certified"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "e9f1593a-3ad8-48e6-b32b-393e3c0d91d3",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1288,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Macey Rempel PhD",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Cancel a document order
requires authentication
Cancels the order if it has not yet been dispatched.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/cancel" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/cancel"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "1da9bc80-752f-410b-aa92-35579cde1699",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1118,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Miss Pearl Hauck",
"address_line_1": "99279 Kenyatta Knoll",
"address_line_2": null,
"city": "Careymouth",
"state": "IA",
"zip": "64310-6432"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Record a document-order payment
requires authentication
Records a charge, refund, adjustment or applied-credit line against the order.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/pay" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"type\": \"charge\",
\"amount_cents\": 995,
\"reference\": \"pi_3Q1abcXyz\",
\"notes\": \"b\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/pay"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"type": "charge",
"amount_cents": 995,
"reference": "pi_3Q1abcXyz",
"notes": "b"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "878a27d0-9793-4977-851f-69bcebcd5f00",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 1288,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "first_class",
"recipient": {
"name": "Macey Rempel PhD",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List document-order payments
requires authentication
Returns the payment ledger for the order.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/payments" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/document-orders/6ff8f7f6-1eb3-3525-be4a-3932c805afed/payments"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "9bc483b6-af19-4172-9ef8-cc3a5be75da5",
"type": "charge",
"amount_cents": 1118,
"reference": "TXN-35450949",
"notes": "Commodi incidunt iure odit.",
"recorded_at": "2026-10-05T15:49:20+00:00",
"created_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "6bbd4a73-c2a8-4646-b82e-e094fc680458",
"type": "charge",
"amount_cents": 1047,
"reference": "TXN-66214223",
"notes": null,
"recorded_at": "2026-10-05T15:49:20+00:00",
"created_at": "2026-10-05T15:49:20+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Documents
Generated PDFs: list, generate, download and revert.
List documents
requires authentication
Paginated generated documents visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/documents?type=architecto&status=architecto&is_preview=&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/documents"
);
const params = {
"type": "architecto",
"status": "architecto",
"is_preview": "0",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "1e1311cc-be60-4bd0-8f05-0bf987f1c175",
"type": "pay-application",
"template": "documents.pay-application.default",
"state": null,
"file_name": "animi.pdf",
"mime_type": "application/pdf",
"file_size": 290549,
"status": "completed",
"is_preview": false,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "3a87d5de-f176-41a5-8bf9-51eca125090a",
"type": "pay-application",
"template": "documents.pay-application.default",
"state": null,
"file_name": "impedit.pdf",
"mime_type": "application/pdf",
"file_size": 80691,
"status": "completed",
"is_preview": false,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a document
requires authentication
Returns document metadata by UUID (not the PDF bytes).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "b195331e-0576-4b04-a279-8a691955ba6e",
"type": "pay-application",
"template": "documents.pay-application.default",
"state": null,
"file_name": "quidem.pdf",
"mime_type": "application/pdf",
"file_size": 47583,
"status": "completed",
"is_preview": false,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Generate a document
requires authentication
Renders a PDF for a notice, waiver, escalation or pay application. Runs the claimant / owner / GC preflight first. Pass preview=true for a no-charge draft.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/documents/generate" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"documentable_type\": \"notice\",
\"documentable_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"notice\",
\"state\": \"CA\",
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"preview\": false
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/documents/generate"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"documentable_type": "notice",
"documentable_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "notice",
"state": "CA",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"preview": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "dc6c347b-a29d-4053-b237-29ef32be46af",
"type": "pay-application",
"template": "documents.pay-application.default",
"state": null,
"file_name": "et.pdf",
"mime_type": "application/pdf",
"file_size": 122326,
"status": "completed",
"is_preview": false,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Revert a document
requires authentication
Marks the current generated document reverted so the source record can be regenerated.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed/revert" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed/revert"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Document reverted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download a document PDF
requires authentication
Streams the generated PDF (application/pdf).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/documents/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, The generated PDF, served as application/pdf with a Content-Disposition attachment header.):
<binary PDF stream>
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Entity Meta
Polymorphic key-value store attachable to any entity.
List entity metadata
requires authentication
All metadata keyvalue pairs stored on the given entity.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"key": "review_state",
"value": "in_review",
"type": "string"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get an entity metadata value
requires authentication
Returns one metadata entry by key.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"key": "review_state",
"value": "in_review",
"type": "string"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Set an entity metadata value
requires authentication
Creates or replaces the metadata entry at the given key.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"value\": \"in_review\",
\"type\": \"string\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"value": "in_review",
"type": "string"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"key": "review_state",
"value": "in_review",
"type": "string"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete an entity metadata value
requires authentication
Removes the metadata entry at the given key.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/architecto/architecto/meta/architecto"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Meta value deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Escalations
Demand and escalation documents, with transitions and mail orders.
List escalations
requires authentication
Paginated escalations visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/escalations?project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&type=architecto&status=architecto&state=CA&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations"
);
const params = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "architecto",
"status": "architecto",
"state": "CA",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "c7b0e9e9-0da5-4e21-81e8-63a7e3b0b8ca",
"project_id": "d0672308-15b0-4575-9f99-18feaf312965",
"organization_id": "34cd7cf9-d69f-465b-bb84-0c9e496caeb7",
"division_id": "a8c06a50-fb35-40e1-b696-4b43a10a8d85",
"notice_id": null,
"type": "lawsuit",
"type_label": "Lawsuit",
"status": "draft",
"status_label": "Draft",
"state": "RI",
"escalation_date": "2026-02-22",
"deadline_date": "2026-11-08",
"claim_amount": "271817.20",
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "353e8c03-0d85-4bfc-8ba6-922905cc5bc2",
"project_id": "88251d87-12a7-4185-a909-fc3598885e07",
"organization_id": "b0f64a37-3efc-4363-9ff9-71381ec4e358",
"division_id": "bcd8631a-3730-4984-8982-3bae1bb6ac59",
"notice_id": null,
"type": "lien_filing",
"type_label": "Lien Filing",
"status": "draft",
"status_label": "Draft",
"state": "ND",
"escalation_date": "2026-06-18",
"deadline_date": null,
"claim_amount": null,
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a escalation
requires authentication
Creates a escalation and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/escalations" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"notice_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"demand_letter\",
\"state\": \"CA\",
\"escalation_date\": \"2026-05-24\",
\"deadline_date\": \"2026-06-24\",
\"claim_amount\": 50000,
\"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"notice_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "demand_letter",
"state": "CA",
"escalation_date": "2026-05-24",
"deadline_date": "2026-06-24",
"claim_amount": 50000,
"description": "Eius et animi quos velit et."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "f573c767-61c9-4ddc-ac75-eef0f61dac88",
"project_id": "d4e0de47-0810-40d5-bb1f-b784a4c216b9",
"organization_id": "fbe016f0-0d51-40d0-974b-8170e909b595",
"division_id": "8985742a-c5e2-4f8c-be15-049aaa15fffd",
"notice_id": null,
"type": "lien_filing",
"type_label": "Lien Filing",
"status": "draft",
"status_label": "Draft",
"state": "ND",
"escalation_date": "2025-12-23",
"deadline_date": "2026-10-31",
"claim_amount": null,
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a escalation
requires authentication
Returns a single escalation by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "54a2382d-e750-47ae-8ffc-c1930d58e7b0",
"project_id": "da167f52-38c0-495d-b759-9ba220ebafbb",
"organization_id": "e7b14d44-9801-40b9-8cf7-a9d04df680c5",
"division_id": "1301e112-b499-4e40-a929-212fa930efd4",
"notice_id": null,
"type": "demand_letter",
"type_label": "Demand Letter",
"status": "draft",
"status_label": "Draft",
"state": "MO",
"escalation_date": "2025-11-04",
"deadline_date": "2027-02-03",
"claim_amount": "370510.26",
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a escalation
requires authentication
Applies a partial update to a escalation and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"notice_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"demand_letter\",
\"state\": \"CA\",
\"escalation_date\": \"2026-05-24\",
\"deadline_date\": \"2026-06-24\",
\"claim_amount\": 50000,
\"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"notice_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "demand_letter",
"state": "CA",
"escalation_date": "2026-05-24",
"deadline_date": "2026-06-24",
"claim_amount": 50000,
"description": "Eius et animi quos velit et."
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "0712a80f-f3f5-41db-97a4-39ebe89bb8d6",
"project_id": "5d718586-9239-4f74-a80d-df31800cdedb",
"organization_id": "06a4bc9c-e2df-470a-85fc-cd0d160292ec",
"division_id": "248ca091-60e7-4dd7-9551-940c12c5f5f5",
"notice_id": null,
"type": "lien_filing",
"type_label": "Lien Filing",
"status": "draft",
"status_label": "Draft",
"state": "ND",
"escalation_date": "2025-12-23",
"deadline_date": "2026-10-31",
"claim_amount": null,
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a escalation
requires authentication
Soft-deletes the escalation.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Escalation deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Transition an escalation
requires authentication
Moves the escalation to another workflow status.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"status\": \"sent\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"status": "sent"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "a0762252-a884-4970-8eee-481b8373bc11",
"project_id": "4e8f79ae-a8cd-4baa-a7c1-012c2aca9d8c",
"organization_id": "f3f23a00-19b6-4245-a4c8-1e54ff501acc",
"division_id": "2655b3de-ddcf-4e85-955a-ed8c08054dc6",
"notice_id": null,
"type": "demand_letter",
"type_label": "Demand Letter",
"status": "draft",
"status_label": "Draft",
"state": "MO",
"escalation_date": "2025-11-04",
"deadline_date": "2027-02-03",
"claim_amount": "370510.26",
"description": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Generate & mail an escalation
requires authentication
Generates the escalation document if needed, then creates a mail order for it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed/order" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"billing_method\": \"credit_balance\",
\"amount_cents\": 27,
\"mail_class\": \"certified\",
\"recipient_name\": \"Property Owner LLC\",
\"recipient_address_line_1\": \"200 Main Street\",
\"recipient_address_line_2\": \"n\",
\"recipient_city\": \"Austin\",
\"recipient_state\": \"TX\",
\"recipient_zip\": \"78702\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/escalations/6ff8f7f6-1eb3-3525-be4a-3932c805afed/order"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"billing_method": "credit_balance",
"amount_cents": 27,
"mail_class": "certified",
"recipient_name": "Property Owner LLC",
"recipient_address_line_1": "200 Main Street",
"recipient_address_line_2": "n",
"recipient_city": "Austin",
"recipient_state": "TX",
"recipient_zip": "78702"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "15a5d9dc-9993-4bc3-9a58-279d416ca402",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 4175,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "priority",
"recipient": {
"name": "Rowan Gulgowski",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fulfillment Requests
Hand research to CLS staff, who fill in the blanks and materialise the records.
List fulfillment requests
requires authentication
Paginated CLS research requests visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests?type=notice_research&status=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests"
);
const params = {
"type": "notice_research",
"status": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "6b8e2779-bf78-4b65-83fb-7863c5c70de3",
"organization_id": "d4c2d0a6-01c4-463a-af95-1254c79c525a",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
"source_kind": "project",
"source_id": "c90237e9-ced5-3af6-88ea-84aeaa148878",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "a1a0a47d-e8c3-3cf0-8e6e-c1ff9dca5d1f",
"name": "Ernser Group",
"jobsite": {
"line_1": "5954 Schuster Lane Apt. 042",
"city": "Lyricberg",
"state": "MO",
"zip": "42170-0432"
}
},
"division_id": "3cb1f6c4-6159-4e94-8f09-74925602bd1f",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "50ccc6a6-20b8-4565-a050-447b0786b141",
"organization_id": "f635e347-d9f8-4d94-a54c-51c3c9348631",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "128dddd1-af1b-310e-a6a4-c38c0253b195",
"source_kind": "project",
"source_id": "3dd3dce1-4b7c-321e-848a-0aab7c899d4a",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "a6ed8703-1bb4-356c-b26b-3dab078a446c",
"name": "Grady Ltd",
"jobsite": {
"line_1": "368 Kendra Gardens",
"city": "Corwinchester",
"state": "NE",
"zip": "11087-1102"
}
},
"division_id": "4797f45d-f90d-4404-ba75-2c87255ee3af",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a fulfillment request
requires authentication
Hands a notice-research job to CLS staff. Idempotent on idempotency_key. CLS materialises the project and notice back into your account.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"notice_research\",
\"idempotency_key\": \"fulfill-2026-05-24-0001\",
\"source_kind\": \"api\",
\"source_id\": \"job-8821\",
\"payload\": {
\"fulfillment_scope\": \"research_and_document\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"claimant_role\": \"sub-contractor\",
\"project\": {
\"external_id\": \"job-8821\",
\"name\": \"Riverside Medical Center\",
\"furnished_description\": \"Electrical rough-in, wiring and light fixtures\",
\"contract_amount\": 48250.75,
\"first_furnishing_date\": \"2026-09-01\",
\"last_furnishing_date\": \"2026-09-28\",
\"date_contract\": \"2026-08-15\",
\"project_type\": \"com-new-build\",
\"jobsite\": {
\"state\": \"TX\",
\"line_1\": \"500 Riverside Dr\",
\"line_2\": \"b\",
\"city\": \"Austin\",
\"zip\": \"78704\",
\"county\": \"Travis\",
\"description\": \"Et animi quos velit et fugiat.\",
\"latitude\": 30.2672,
\"longitude\": -97.7431
}
},
\"parties\": [
{
\"company_name\": \"Skyline Builders Inc\",
\"role\": \"owner-on-title\",
\"address\": {
\"line_1\": \"12 Field Ave\",
\"line_2\": \"d\",
\"city\": \"Dallas\",
\"state\": \"TX\",
\"zip\": \"75201\"
},
\"phone\": \"l\",
\"email\": \"idickens@example.org\",
\"is_customer\": true
}
]
}
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "notice_research",
"idempotency_key": "fulfill-2026-05-24-0001",
"source_kind": "api",
"source_id": "job-8821",
"payload": {
"fulfillment_scope": "research_and_document",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"claimant_role": "sub-contractor",
"project": {
"external_id": "job-8821",
"name": "Riverside Medical Center",
"furnished_description": "Electrical rough-in, wiring and light fixtures",
"contract_amount": 48250.75,
"first_furnishing_date": "2026-09-01",
"last_furnishing_date": "2026-09-28",
"date_contract": "2026-08-15",
"project_type": "com-new-build",
"jobsite": {
"state": "TX",
"line_1": "500 Riverside Dr",
"line_2": "b",
"city": "Austin",
"zip": "78704",
"county": "Travis",
"description": "Et animi quos velit et fugiat.",
"latitude": 30.2672,
"longitude": -97.7431
}
},
"parties": [
{
"company_name": "Skyline Builders Inc",
"role": "owner-on-title",
"address": {
"line_1": "12 Field Ave",
"line_2": "d",
"city": "Dallas",
"state": "TX",
"zip": "75201"
},
"phone": "l",
"email": "idickens@example.org",
"is_customer": true
}
]
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "63bc1a0c-7c31-4d17-aebc-708149ce6396",
"organization_id": "94f918d5-2979-47bd-a116-34f5eb6fef3e",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "5e4f00df-4238-35bd-9edc-0b98dc359c80",
"source_kind": "project",
"source_id": "3c85cf54-98c1-36ed-b65a-abaafdecdfa9",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "e2398df3-051c-3810-a269-3a15e327b316",
"name": "Swift Inc",
"jobsite": {
"line_1": "532 Leuschke Causeway",
"city": "McLaughlinstad",
"state": "MI",
"zip": "07365"
}
},
"division_id": "921e7af0-0143-4db0-bd77-b4c0249e78d6",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a fulfillment request
requires authentication
Returns a single request, including status and any research result, by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "ba1bdec4-de6a-4ccc-be33-f54b906e31d2",
"organization_id": "a80b3f51-fcbf-46cf-8499-28c036ff47ae",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "bfc53181-d647-36b2-9080-f9c2b76006f4",
"source_kind": "project",
"source_id": "5d093e7f-5aae-3aa3-bece-f6e784dcbd67",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "445bd3f6-8f2c-38cb-aa04-2f4e1edb32bb",
"name": "Baumbach Ltd",
"jobsite": {
"line_1": "427 Predovic Ridge",
"city": "Baileemouth",
"state": "KS",
"zip": "32375-9947"
}
},
"division_id": "761b6726-c71c-4166-8ab7-fb1ffcc8c6a1",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Cancel a fulfillment request
requires authentication
Cancels the request if CLS has not already completed it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/cancel" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"reason\": \"Duplicate request\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/cancel"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"reason": "Duplicate request"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "c45c6758-f10c-4ef8-babc-774a61b6c5cd",
"organization_id": "8aadafae-38fd-440e-96d2-8585746e2929",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
"source_kind": "project",
"source_id": "6b72fe4a-5b40-307c-bc24-f79acf9a1bb9",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "977e5426-8d13-3824-86aa-b092f8ae52c5",
"name": "O'Kon and Sons",
"jobsite": {
"line_1": "80841 Mya Lane Apt. 042",
"city": "Lyricberg",
"state": "MO",
"zip": "42170-0432"
}
},
"division_id": "0a6fd34b-6715-4cc3-8123-7e548702dd58",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retry a fulfillment request
requires authentication
Resubmits a failed request to CLS.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"reason\": \"CLS asked us to resubmit\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/retry"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"reason": "CLS asked us to resubmit"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "c6df5f9c-ffa5-4ef1-b5d8-5a62b3c56920",
"organization_id": "9ac9d519-464d-4ef7-8b62-7060be4a1f6c",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
"source_kind": "project",
"source_id": "6b72fe4a-5b40-307c-bc24-f79acf9a1bb9",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "977e5426-8d13-3824-86aa-b092f8ae52c5",
"name": "O'Kon and Sons",
"jobsite": {
"line_1": "80841 Mya Lane Apt. 042",
"city": "Lyricberg",
"state": "MO",
"zip": "42170-0432"
}
},
"division_id": "70a2f55b-6581-479b-9898-bc50650d13f6",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Approve additional fulfillment charges
requires authentication
For a full-service request in payment_required: CLS research found more recipients than postage is held for. Holds the extra postage (payment_due.additional_credits) from your CLS-eligible credits and releases the ticket back to CLS. Responds 402 with the shortfall if your balance cannot cover it yet -- buy credits and call again.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/approve-charges" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/approve-charges"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "d8d9d58a-a2e1-492f-8028-aa2088a7e671",
"organization_id": "f08d29f2-0ccf-45b0-978d-6076b2a1872e",
"requested_by_user_id": null,
"type": "notice_research",
"status": "queued",
"status_label": "Queued",
"idempotency_key": "bfc53181-d647-36b2-9080-f9c2b76006f4",
"source_kind": "project",
"source_id": "5d093e7f-5aae-3aa3-bece-f6e784dcbd67",
"cls_resource_type": null,
"cls_resource_id": null,
"status_reason": null,
"last_error": null,
"retry_count": 0,
"payload": {
"fulfillment_scope": "research",
"project": {
"external_id": "445bd3f6-8f2c-38cb-aa04-2f4e1edb32bb",
"name": "Baumbach Ltd",
"jobsite": {
"line_1": "427 Predovic Ridge",
"city": "Baileemouth",
"state": "KS",
"zip": "32375-9947"
}
},
"division_id": "59effae1-659e-4347-aa46-210a57cb448b",
"claimant_role": "sub-contractor"
},
"meta": null,
"result": null,
"postage": null,
"payment_due": null,
"submitted_at": null,
"fulfilled_at": null,
"failed_at": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download a fulfillment file
requires authentication
Streams a file CLS attached to the fulfilled ticket (research documents, jobsite files), from our own copy. Files are listed under files on the fulfillment request once copied.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/fulfillment-requests/6ff8f7f6-1eb3-3525-be4a-3932c805afed/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Jobsites
Physical work locations for a project.
List jobsites
requires authentication
Paginated jobsites visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/jobsites?project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&is_primary=1&search=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/jobsites"
);
const params = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"is_primary": "1",
"search": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "6166e83a-ef90-402f-b62b-650c560f4c67",
"project_id": "48b4d02e-478d-4f5d-ad95-009bd77ce550",
"name": "eius et Site",
"address": {
"line_1": "764 Ernser Parkways Suite 841",
"line_2": null,
"city": "Cecilburgh",
"state": "WI",
"zip": "02042",
"county": null
},
"apn": null,
"legal_description": "Adipisci quidem nostrum qui commodi incidunt iure.",
"is_primary": false,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "edeaaf87-31fe-48dc-a4e8-8881be01f149",
"project_id": "40f27878-da1b-4fe7-bb85-ae9b2598c000",
"name": "ratione iure Site",
"address": {
"line_1": "441 Swaniawski Roads Apt. 721",
"line_2": null,
"city": "Brianneborough",
"state": "AL",
"zip": "84131-2753",
"county": "error"
},
"apn": null,
"legal_description": null,
"is_primary": false,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a jobsite
requires authentication
Creates a jobsite and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/jobsites" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"name\": \"Main Site\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"b\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"county\": \"Travis\",
\"apn\": \"123-456-789\",
\"legal_description\": \"Lot 5, Block 2, Example Subdivision\",
\"is_primary\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/jobsites"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"name": "Main Site",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "b",
"city": "Austin",
"state": "CA",
"zip": "78701",
"county": "Travis",
"apn": "123-456-789",
"legal_description": "Lot 5, Block 2, Example Subdivision",
"is_primary": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "445809ee-1be8-447d-aeb1-37371eb63b1d",
"project_id": "9a60bab2-64b8-4692-a3b6-3f0ebfffbf9e",
"name": "eius et Site",
"address": {
"line_1": "764 Ernser Parkways Suite 841",
"line_2": null,
"city": "Cecilburgh",
"state": "WI",
"zip": "02042",
"county": null
},
"apn": null,
"legal_description": "Adipisci quidem nostrum qui commodi incidunt iure.",
"is_primary": false,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a jobsite
requires authentication
Returns a single jobsite by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "79633fc6-3644-4e14-ab18-21b87d751294",
"project_id": "db5e3d6b-0f33-4e6e-8693-1332c8a98b2d",
"name": "aut adipisci Site",
"address": {
"line_1": "41881 Leo Pine Apt. 627",
"line_2": null,
"city": "South Isidrostad",
"state": "WV",
"zip": "17091-7515",
"county": "non"
},
"apn": "584-087-043",
"legal_description": null,
"is_primary": false,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a jobsite
requires authentication
Applies a partial update to a jobsite and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Main Site\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"b\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"county\": \"Travis\",
\"apn\": \"123-456-789\",
\"legal_description\": \"Lot 5, Block 2, Example Subdivision\",
\"is_primary\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Main Site",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "b",
"city": "Austin",
"state": "CA",
"zip": "78701",
"county": "Travis",
"apn": "123-456-789",
"legal_description": "Lot 5, Block 2, Example Subdivision",
"is_primary": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "fb8b9edd-04dd-441d-a19a-fcecf8eb53a4",
"project_id": "4b8120d3-fba0-4415-83c5-db1220762d62",
"name": "eius et Site",
"address": {
"line_1": "764 Ernser Parkways Suite 841",
"line_2": null,
"city": "Cecilburgh",
"state": "WI",
"zip": "02042",
"county": null
},
"apn": null,
"legal_description": "Adipisci quidem nostrum qui commodi incidunt iure.",
"is_primary": false,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a jobsite
requires authentication
Soft-deletes the jobsite.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/jobsites/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Jobsite deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Notices
Preliminary notices, amendments, state transitions and accountable mail orders.
List notices
requires authentication
Paginated notices visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/notices?project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&type=architecto&status=architecto&state=CA&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices"
);
const params = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "architecto",
"status": "architecto",
"state": "CA",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "87a78e82-e91a-4bfa-8442-a07d1562d7f6",
"notice_number": "N-260222-C6P001",
"project_id": "00b6aa9b-f819-4c5a-aecf-ac40e507f589",
"organization_id": "068f1505-1d36-4b04-93f5-cd294b487e6e",
"division_id": "845ad3bb-e734-45a9-83de-c4d13e05bcb8",
"type": "bond_claim",
"type_label": "Bond Claim",
"status": "draft",
"status_label": "Draft",
"state": "RI",
"notice_date": "2026-02-22",
"deadline_date": "2026-11-08",
"deadline_source": null,
"first_furnishing_date": "2026-02-11",
"last_furnishing_date": "2026-09-10",
"deadline_rule": {
"required": null,
"basis": "not_applicable",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "Serve-by deadlines are only calculated for preliminary notices.",
"source": null,
"verified": false
},
"claim_amount": "280415.85",
"original_claim_amount": null,
"description": "Accusantium harum mollitia modi deserunt aut ab.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "bba7d89a-fd55-4afa-863b-d47e7e56b952",
"notice_number": "N-260902-K66001",
"project_id": "7ab1a274-abc6-4a72-b974-18ec78e7899e",
"organization_id": "1ded52c3-268c-4404-8d73-bc0014f16781",
"division_id": "ef8f65c7-32e0-4e91-9861-527be667a14f",
"type": "lien",
"type_label": "Lien Notice",
"status": "draft",
"status_label": "Draft",
"state": "CT",
"notice_date": "2026-09-02",
"deadline_date": null,
"deadline_source": null,
"first_furnishing_date": "2026-07-11",
"last_furnishing_date": "2026-10-03",
"deadline_rule": {
"required": null,
"basis": "not_applicable",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "Serve-by deadlines are only calculated for preliminary notices.",
"source": null,
"verified": false
},
"claim_amount": "448226.98",
"original_claim_amount": null,
"description": "Rem ea ut aut deserunt.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a notice
requires authentication
Creates a notice and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/notices" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"preliminary\",
\"state\": \"CA\",
\"notice_date\": \"2026-05-24\",
\"deadline_date\": \"2026-06-24\",
\"first_furnishing_date\": \"2026-09-15\",
\"last_furnishing_date\": \"2026-10-20\",
\"claim_amount\": 50000,
\"original_claim_amount\": 27,
\"parent_notice_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"amendment_reason\": \"corrected_amount\",
\"description\": \"Electrical rough-in, wiring and light fixtures\",
\"metadata\": {
\"party_grid_max\": 8,
\"mail_pack\": true,
\"service_method\": \"n\",
\"service_date\": \"2026-10-05T15:49:19\"
}
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "preliminary",
"state": "CA",
"notice_date": "2026-05-24",
"deadline_date": "2026-06-24",
"first_furnishing_date": "2026-09-15",
"last_furnishing_date": "2026-10-20",
"claim_amount": 50000,
"original_claim_amount": 27,
"parent_notice_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"amendment_reason": "corrected_amount",
"description": "Electrical rough-in, wiring and light fixtures",
"metadata": {
"party_grid_max": 8,
"mail_pack": true,
"service_method": "n",
"service_date": "2026-10-05T15:49:19"
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "44d02522-5bd1-4ed5-a127-82cfb48d2afd",
"notice_number": "N-260518-7DQ001",
"project_id": "0d7cf48b-0214-4dc9-8fc8-9ca13bb172ef",
"organization_id": "44bc4702-7e7d-451a-9473-12de34c1e46a",
"division_id": "f2fb3327-0194-4877-a51d-2b8aaafbb12d",
"type": "lien",
"type_label": "Lien Notice",
"status": "draft",
"status_label": "Draft",
"state": "IL",
"notice_date": "2026-05-18",
"deadline_date": null,
"deadline_source": null,
"first_furnishing_date": "2026-02-11",
"last_furnishing_date": "2026-09-10",
"deadline_rule": {
"required": null,
"basis": "not_applicable",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "Serve-by deadlines are only calculated for preliminary notices.",
"source": null,
"verified": false
},
"claim_amount": "280415.85",
"original_claim_amount": null,
"description": "Accusantium harum mollitia modi deserunt aut ab.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a notice
requires authentication
Returns a single notice by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "6473e2d5-b977-403d-87f6-27a4219d8627",
"notice_number": "N-251104-9FV001",
"project_id": "7d724e6e-f60f-4000-b86e-faccba78e026",
"organization_id": "00fd486f-3e89-46a9-93b0-46da60dd96d6",
"division_id": "06fe9388-e339-4be8-80bb-59d037ea9c12",
"type": "preliminary",
"type_label": "Preliminary Notice",
"status": "draft",
"status_label": "Draft",
"state": "MO",
"notice_date": "2025-11-04",
"deadline_date": "2027-02-03",
"deadline_source": null,
"first_furnishing_date": "2025-12-20",
"last_furnishing_date": "2026-09-20",
"deadline_rule": {
"required": true,
"basis": "varies",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "The MO deadline depends on the facts of the project (varies) and is not calculated; set deadline_date yourself.",
"source": null,
"verified": false
},
"claim_amount": "99055.43",
"original_claim_amount": null,
"description": "Et et modi ipsum nostrum.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a notice
requires authentication
Applies a partial update to a notice and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"type\": \"preliminary\",
\"state\": \"CA\",
\"notice_date\": \"2026-05-24\",
\"deadline_date\": \"2026-06-24\",
\"first_furnishing_date\": \"2026-09-15\",
\"last_furnishing_date\": \"2026-10-20\",
\"claim_amount\": 50000,
\"description\": \"Eius et animi quos velit et.\",
\"metadata\": {
\"party_grid_max\": 4,
\"mail_pack\": true,
\"service_method\": \"v\",
\"service_date\": \"2026-10-05T15:49:19\"
}
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"type": "preliminary",
"state": "CA",
"notice_date": "2026-05-24",
"deadline_date": "2026-06-24",
"first_furnishing_date": "2026-09-15",
"last_furnishing_date": "2026-10-20",
"claim_amount": 50000,
"description": "Eius et animi quos velit et.",
"metadata": {
"party_grid_max": 4,
"mail_pack": true,
"service_method": "v",
"service_date": "2026-10-05T15:49:19"
}
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "5b113d62-8f68-464b-83aa-06bdcee18cc0",
"notice_number": "N-251120-6MK001",
"project_id": "b4919775-4341-4ec1-8901-2a017fc6ed64",
"organization_id": "3313285e-20d2-49f2-aa0d-29634aa32fd7",
"division_id": "cba56efe-184a-4a06-ac9b-72f44081448b",
"type": "bond_claim",
"type_label": "Bond Claim",
"status": "draft",
"status_label": "Draft",
"state": "OK",
"notice_date": "2025-11-20",
"deadline_date": "2027-01-06",
"deadline_source": null,
"first_furnishing_date": "2026-02-23",
"last_furnishing_date": "2026-09-26",
"deadline_rule": {
"required": null,
"basis": "not_applicable",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "Serve-by deadlines are only calculated for preliminary notices.",
"source": null,
"verified": false
},
"claim_amount": "315532.61",
"original_claim_amount": null,
"description": "Provident perspiciatis quo omnis nostrum aut adipisci quidem.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a notice
requires authentication
Soft-deletes the notice.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Notice deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Transition a notice
requires authentication
Moves the notice to another workflow status. Reaching 'generated' is not allowed here - generate the document instead.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"status\": \"sent\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"status": "sent"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "e254bdbd-54dd-4d5b-9c8a-eb1e7ddd22e5",
"notice_number": "N-251104-X9H001",
"project_id": "3de0cff4-44c5-4bd3-8a21-230c362f28a1",
"organization_id": "e354c530-1cf6-445e-9bd4-3b1e4ddb5e59",
"division_id": "00ecc154-47cf-4f38-b957-c99063163eb9",
"type": "preliminary",
"type_label": "Preliminary Notice",
"status": "draft",
"status_label": "Draft",
"state": "MO",
"notice_date": "2025-11-04",
"deadline_date": "2027-02-03",
"deadline_source": null,
"first_furnishing_date": "2025-12-20",
"last_furnishing_date": "2026-09-20",
"deadline_rule": {
"required": true,
"basis": "varies",
"days": null,
"deadline": null,
"rolling_lookback_days": null,
"explanation": "The MO deadline depends on the facts of the project (varies) and is not calculated; set deadline_date yourself.",
"source": null,
"verified": false
},
"claim_amount": "99055.43",
"original_claim_amount": null,
"description": "Et et modi ipsum nostrum.",
"is_amendment": false,
"parent_notice_id": null,
"amendment_reason": null,
"amendment_reason_label": null,
"amendment_sequence": 1,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Generate & mail a notice
requires authentication
Generates the notice PDF if needed, then creates an accountable USPS mail order for it. Reuses an existing PDF to avoid a second charge.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed/order" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"billing_method\": \"credit_balance\",
\"amount_cents\": 27,
\"mail_class\": \"certified\",
\"recipient_name\": \"Property Owner LLC\",
\"recipient_address_line_1\": \"200 Main Street\",
\"recipient_address_line_2\": \"n\",
\"recipient_city\": \"Austin\",
\"recipient_state\": \"TX\",
\"recipient_zip\": \"78702\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/notices/6ff8f7f6-1eb3-3525-be4a-3932c805afed/order"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"billing_method": "credit_balance",
"amount_cents": 27,
"mail_class": "certified",
"recipient_name": "Property Owner LLC",
"recipient_address_line_1": "200 Main Street",
"recipient_address_line_2": "n",
"recipient_city": "Austin",
"recipient_state": "TX",
"recipient_zip": "78702"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "ac2e04b3-1e15-4e30-9fd7-94dbd86a8b19",
"status": "pending",
"order_type": "mail",
"billing": {
"status": "pending",
"method": "credit_balance",
"amount_cents": 4175,
"invoiced_at": null,
"paid_at": null,
"invoice_reference": null,
"payment_reference": null
},
"tracking_number": null,
"carrier": null,
"mail_class": "priority",
"recipient": {
"name": "Rowan Gulgowski",
"address_line_1": "4529 Tillman Ridges Suite 142",
"address_line_2": null,
"city": "East Nickshire",
"state": "MO",
"zip": "33724"
},
"external_provider_id": null,
"shipped_at": null,
"delivered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Organizations
Tenant accounts and directory records for counterparties (owner, GC, lender).
List organizations
requires authentication
Paginated organizations visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/organizations?type=architecto&role=owner&search=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/organizations"
);
const params = {
"type": "architecto",
"role": "owner",
"search": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "0dc8cc85-76ab-4463-bee6-f1385cd01bdb",
"name": "Bailey Ltd",
"type": "general-contractor",
"license_number": null,
"ein": "31-2965625",
"phone": null,
"email": "idickens@runte.com",
"address": {
"line_1": "16748 Lyric Loop",
"line_2": null,
"city": "New Theoburgh",
"state": "LA",
"zip": "19279",
"zip_plus_4": null,
"country_code": "US"
},
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "bd17fbb9-45cb-4691-85b1-d72331c439dd",
"name": "Leuschke, Bauch and Fritsch",
"type": "sub-contractor",
"license_number": null,
"ein": "79-0915066",
"phone": null,
"email": null,
"address": {
"line_1": "5161 Vesta Coves Apt. 809",
"line_2": null,
"city": "Haagborough",
"state": "MT",
"zip": "36080-0782",
"zip_plus_4": null,
"country_code": "US"
},
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a organization
requires authentication
Creates a organization and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/organizations" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Acme Construction Co\",
\"type\": \"general_contractor\",
\"license_number\": \"LIC-558231\",
\"ein\": \"12-3456789\",
\"phone\": \"512-555-0100\",
\"email\": \"ops@example.com\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"b\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"zip_plus_4\": \"1234\",
\"country_code\": \"US\",
\"cls_reference_id\": \"CLS-10842\",
\"role\": \"owner\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/organizations"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Acme Construction Co",
"type": "general_contractor",
"license_number": "LIC-558231",
"ein": "12-3456789",
"phone": "512-555-0100",
"email": "ops@example.com",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "b",
"city": "Austin",
"state": "CA",
"zip": "78701",
"zip_plus_4": "1234",
"country_code": "US",
"cls_reference_id": "CLS-10842",
"role": "owner"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "afbc6bfb-9510-4f28-b957-904a19acac55",
"name": "Bailey Ltd",
"type": "general-contractor",
"license_number": null,
"ein": "31-2965625",
"phone": null,
"email": "idickens@runte.com",
"address": {
"line_1": "16748 Lyric Loop",
"line_2": null,
"city": "New Theoburgh",
"state": "LA",
"zip": "19279",
"zip_plus_4": null,
"country_code": "US"
},
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a organization
requires authentication
Returns a single organization by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "a778a857-8700-44fa-a75c-67bde426960b",
"name": "Price Ltd",
"type": "general-contractor",
"license_number": null,
"ein": "59-0214902",
"phone": null,
"email": null,
"address": {
"line_1": "427 Predovic Ridge",
"line_2": null,
"city": "Baileemouth",
"state": "KS",
"zip": "32375-9947",
"zip_plus_4": null,
"country_code": "US"
},
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a organization
requires authentication
Applies a partial update to a organization and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Acme Construction Co\",
\"type\": \"general_contractor\",
\"license_number\": \"LIC-558231\",
\"ein\": \"12-3456789\",
\"phone\": \"512-555-0100\",
\"email\": \"ops@example.com\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"b\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"zip_plus_4\": \"1234\",
\"country_code\": \"US\",
\"cls_reference_id\": \"CLS-10842\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Acme Construction Co",
"type": "general_contractor",
"license_number": "LIC-558231",
"ein": "12-3456789",
"phone": "512-555-0100",
"email": "ops@example.com",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "b",
"city": "Austin",
"state": "CA",
"zip": "78701",
"zip_plus_4": "1234",
"country_code": "US",
"cls_reference_id": "CLS-10842"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "4953b899-dc92-40e4-bd9d-bb8a9ccac222",
"name": "Bailey Ltd",
"type": "general-contractor",
"license_number": null,
"ein": "31-2965625",
"phone": null,
"email": "idickens@runte.com",
"address": {
"line_1": "16748 Lyric Loop",
"line_2": null,
"city": "New Theoburgh",
"state": "LA",
"zip": "19279",
"zip_plus_4": null,
"country_code": "US"
},
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a organization
requires authentication
Soft-deletes the organization.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/organizations/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Organization deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Parties
Project participants (owner, GC, subs) in the CLS role vocabulary.
List partys
requires authentication
Paginated partys visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/parties?project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&role=general_contractor&is_active=1&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/parties"
);
const params = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"role": "general_contractor",
"is_active": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "1aa54411-f745-4581-a543-f249e4354ce1",
"project_id": "2628312c-b356-41be-99ab-c1540374b2b5",
"organization_id": "a1c43657-6c86-42d7-ab95-e0808490127c",
"division_id": null,
"is_claimant": false,
"contact_id": null,
"role": "owner-on-title",
"tier": "sub",
"license_number": "LIC-024635",
"contract_amount": "1485225.30",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "44f08e8a-e117-4440-94ea-955aa3579d28",
"project_id": "593edcd7-a5ed-4a88-91d0-0e6663bade44",
"organization_id": "c2b1d8a0-36f4-4bc6-9ed5-633276e3242f",
"division_id": null,
"is_claimant": false,
"contact_id": null,
"role": "owner-on-title",
"tier": "prime",
"license_number": "LIC-693053",
"contract_amount": null,
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a party
requires authentication
Creates a party and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/parties" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"contact_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"role\": \"general_contractor\",
\"tier\": \"prime\",
\"license_number\": \"LIC-119284\",
\"contract_amount\": 250000,
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/parties"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"contact_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"role": "general_contractor",
"tier": "prime",
"license_number": "LIC-119284",
"contract_amount": 250000,
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "d2646e28-fae3-4538-8496-cb00dbdf2bc1",
"project_id": "8e41f863-5b9d-4068-96f0-b5961519ac38",
"organization_id": "35542e78-b04e-4676-ab38-3744249e8a31",
"division_id": null,
"is_claimant": false,
"contact_id": null,
"role": "general-contractor",
"tier": null,
"license_number": "LIC-589365",
"contract_amount": "456205.34",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a party
requires authentication
Returns a single party by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "d1c6aa90-619f-4fc3-b83f-55dd08023323",
"project_id": "911f6a43-48c7-4e2e-9f78-2bf33fd30e51",
"organization_id": "2c65f467-0ca5-46b4-8e17-7f1e6d3d5091",
"division_id": null,
"is_claimant": false,
"contact_id": null,
"role": "general-contractor",
"tier": "sub-sub",
"license_number": "LIC-031881",
"contract_amount": "1483598.02",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a party
requires authentication
Partial update. The is_claimant party rejects role / is_active changes (422).
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"contact_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"role\": \"general_contractor\",
\"tier\": \"prime\",
\"license_number\": \"LIC-119284\",
\"contract_amount\": 250000,
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"contact_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"role": "general_contractor",
"tier": "prime",
"license_number": "LIC-119284",
"contract_amount": 250000,
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "c55152d3-a81e-4d30-a3db-0b4c72975eb2",
"project_id": "5d916c3a-44a4-46d0-957f-781e1e93ec7c",
"organization_id": "e475924f-595c-430b-b14d-74894993c4ac",
"division_id": null,
"is_claimant": false,
"contact_id": null,
"role": "general-contractor",
"tier": null,
"license_number": "LIC-589365",
"contract_amount": "456205.34",
"is_active": true,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a party
requires authentication
Deletes the party. The system-managed is_claimant party cannot be deleted (422).
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/parties/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Party deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Pay Applications
AIA G702/G703 pay applications and their status lifecycle.
List pay applications
requires authentication
Paginated G702/G703 pay applications visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/pay-applications?status=architecto&project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/pay-applications"
);
const params = {
"status": "architecto",
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "2a852107-b50d-44a0-bfcc-f76bff555a2e",
"application_number": 17,
"period_from": "1996-07-19",
"period_to": "2020-02-16",
"total_contract_amount": "4977103.93",
"previous_billed_amount": "607748.02",
"current_billing_amount": "949513.30",
"retainage_percent": "0.00",
"retainage_amount": "0.00",
"total_completed_to_date": "1557261.32",
"balance_to_finish": "3419842.61",
"status": "draft",
"sov_line_items": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "bf7b998b-db2c-4c37-abb0-f8385f993972",
"application_number": 43,
"period_from": "2009-02-16",
"period_to": "1990-04-07",
"total_contract_amount": "1077361.99",
"previous_billed_amount": "120550.69",
"current_billing_amount": "53163.61",
"retainage_percent": "0.00",
"retainage_amount": "0.00",
"total_completed_to_date": "173714.30",
"balance_to_finish": "903647.69",
"status": "draft",
"sov_line_items": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a pay application
requires authentication
Creates a pay application, optionally with inline SOV line items and participants.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/pay-applications" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"application_number\": 3,
\"period_from\": \"2026-05-01\",
\"period_to\": \"2026-05-31\",
\"total_contract_amount\": 600000,
\"current_billing_amount\": 75000,
\"previous_billed_amount\": 0,
\"retainage_percent\": 10,
\"cls_reference_id\": \"CLS-10842\",
\"sov_line_items\": [
{
\"description\": \"Concrete - foundations\",
\"scheduled_value\": 50000,
\"previous\": 0,
\"this_period\": 12000
}
],
\"participants\": [
{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"role\": \"receiver\"
}
]
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/pay-applications"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"application_number": 3,
"period_from": "2026-05-01",
"period_to": "2026-05-31",
"total_contract_amount": 600000,
"current_billing_amount": 75000,
"previous_billed_amount": 0,
"retainage_percent": 10,
"cls_reference_id": "CLS-10842",
"sov_line_items": [
{
"description": "Concrete - foundations",
"scheduled_value": 50000,
"previous": 0,
"this_period": 12000
}
],
"participants": [
{
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"role": "receiver"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "39e9ede3-7c2d-4807-a505-fed07903e7bb",
"application_number": 16,
"period_from": "1972-10-24",
"period_to": "1996-07-19",
"total_contract_amount": "1976890.61",
"previous_billed_amount": "983826.63",
"current_billing_amount": "145593.19",
"retainage_percent": "0.00",
"retainage_amount": "0.00",
"total_completed_to_date": "1129419.82",
"balance_to_finish": "847470.79",
"status": "draft",
"sov_line_items": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a pay application
requires authentication
Returns a single pay application by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/pay-applications/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/pay-applications/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "58924756-bc0d-466a-8f5b-d07039fb7afe",
"application_number": 33,
"period_from": "2010-03-28",
"period_to": "2022-06-24",
"total_contract_amount": "109752.23",
"previous_billed_amount": "53431.06",
"current_billing_amount": "12714.35",
"retainage_percent": "0.00",
"retainage_amount": "0.00",
"total_completed_to_date": "66145.41",
"balance_to_finish": "43606.82",
"status": "draft",
"sov_line_items": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Transition a pay application
requires authentication
Moves the pay application to submitted, under_review, approved or rejected.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/pay-applications/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"status\": \"submitted\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/pay-applications/6ff8f7f6-1eb3-3525-be4a-3932c805afed/transition"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"status": "submitted"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "ba61bf5d-51a2-450d-86f0-e1ef6a6cbbff",
"application_number": 33,
"period_from": "2010-03-28",
"period_to": "2022-06-24",
"total_contract_amount": "109752.23",
"previous_billed_amount": "53431.06",
"current_billing_amount": "12714.35",
"retainage_percent": "0.00",
"retainage_amount": "0.00",
"total_completed_to_date": "66145.41",
"balance_to_finish": "43606.82",
"status": "draft",
"sov_line_items": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Projects
Construction projects. A claimant division and role are required on create.
List projects
requires authentication
Paginated projects visible to the caller, newest first.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/projects?state=CA&search=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/projects"
);
const params = {
"state": "CA",
"search": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "977f512d-f0d1-4407-b25a-33adef1921b4",
"name": "eius et animi Project",
"division_id": "c9af0603-2c74-4a4f-93d7-bccf0331169d",
"project_number": "PRJ-26316",
"description": null,
"address": {
"line_1": "40575 Dickens Inlet",
"line_2": null,
"city": "Myaport",
"state": "CT",
"zip": "08182",
"county": null
},
"project_type": null,
"contract_amount": "177784.58",
"date_contract": "1981-06-04",
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "a1b39ffb-a611-4c0c-bc79-07d8364a71a1",
"name": "repellendus assumenda et Project",
"division_id": "41a84ca3-8481-4ccf-912f-b0bc0ea46bc6",
"project_number": "PRJ-82438",
"description": "Quia perspiciatis deserunt ducimus corrupti et.",
"address": {
"line_1": "93199 Walker Avenue",
"line_2": null,
"city": "Kreigerburgh",
"state": "FL",
"zip": "96823",
"county": "ut"
},
"project_type": null,
"contract_amount": "305560.48",
"date_contract": "1996-08-19",
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a project
requires authentication
Creates a project and returns it.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/projects" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Riverside Medical Center\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"claimant_role\": \"general_contractor\",
\"date_contract\": \"2026-02-01\",
\"project_number\": \"PRJ-1042\",
\"description\": \"Eius et animi quos velit et.\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"v\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"county\": \"Travis\",
\"project_type\": \"com-new-build\",
\"contract_amount\": 600000,
\"cls_reference_id\": \"CLS-10842\",
\"participants\": [
{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"role\": \"property_owner\"
}
]
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/projects"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Riverside Medical Center",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"claimant_role": "general_contractor",
"date_contract": "2026-02-01",
"project_number": "PRJ-1042",
"description": "Eius et animi quos velit et.",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "v",
"city": "Austin",
"state": "CA",
"zip": "78701",
"county": "Travis",
"project_type": "com-new-build",
"contract_amount": 600000,
"cls_reference_id": "CLS-10842",
"participants": [
{
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"role": "property_owner"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "a6965421-92a8-4b3e-ae7e-1f53728d1882",
"name": "sunt nihil accusantium Project",
"division_id": "d385fff3-210c-428c-b62c-1c4f7adfb4cb",
"project_number": "PRJ-80841",
"description": null,
"address": {
"line_1": "78142 Nick Field",
"line_2": null,
"city": "West Noahmouth",
"state": "WV",
"zip": "59021-4902",
"county": null
},
"project_type": null,
"contract_amount": "655842.27",
"date_contract": "1977-08-15",
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a project
requires authentication
Returns a single project by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "f4c690c6-9346-455b-a9f0-4e0e1fe4fbed",
"name": "aut adipisci quidem Project",
"division_id": "19381109-7056-436d-aa74-7af76e82a924",
"project_number": "PRJ-00432",
"description": null,
"address": {
"line_1": "38862 Ferne Locks Suite 058",
"line_2": null,
"city": "Christianshire",
"state": "IA",
"zip": "97161",
"county": "tempora"
},
"project_type": null,
"contract_amount": "3701357.66",
"date_contract": "1985-12-26",
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a project
requires authentication
Applies a partial update to a project and returns it.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"name\": \"Riverside Medical Center\",
\"project_number\": \"PRJ-1042\",
\"description\": \"Eius et animi quos velit et.\",
\"address_line_1\": \"100 Commerce Blvd\",
\"address_line_2\": \"v\",
\"city\": \"Austin\",
\"state\": \"CA\",
\"zip\": \"78701\",
\"county\": \"Travis\",
\"project_type\": \"com-new-build\",
\"contract_amount\": 600000,
\"date_contract\": \"2026-02-01\",
\"cls_reference_id\": \"CLS-10842\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"name": "Riverside Medical Center",
"project_number": "PRJ-1042",
"description": "Eius et animi quos velit et.",
"address_line_1": "100 Commerce Blvd",
"address_line_2": "v",
"city": "Austin",
"state": "CA",
"zip": "78701",
"county": "Travis",
"project_type": "com-new-build",
"contract_amount": 600000,
"date_contract": "2026-02-01",
"cls_reference_id": "CLS-10842"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "21f6303b-59e0-4d7e-a0c8-4b55d56aaaa2",
"name": "sunt nihil accusantium Project",
"division_id": "3102faa9-72f6-4ac6-8bc6-c2ba06dcd69c",
"project_number": "PRJ-80841",
"description": null,
"address": {
"line_1": "78142 Nick Field",
"line_2": null,
"city": "West Noahmouth",
"state": "WV",
"zip": "59021-4902",
"county": null
},
"project_type": null,
"contract_amount": "655842.27",
"date_contract": "1977-08-15",
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a project
requires authentication
Soft-deletes the project.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Project deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Provider Auth
Stored credentials for downstream service providers.
List provider credentials
requires authentication
Stored mail-provider credentials (secrets are never returned in full).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/provider-auth?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&provider=lob&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/provider-auth"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"provider": "lob",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "e2784395-8e31-406c-b14a-0eb4a9fc665a",
"provider": "lob",
"label": "adipisci quidem",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "b30d7f47-5ba2-4cf3-ba70-cb80ac87e885",
"provider": "stannp",
"label": "adipisci molestias",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a provider credential
requires authentication
Saves an encrypted mail-provider API credential.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/provider-auth" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"provider\": \"lob\",
\"label\": \"Primary Lob key\",
\"api_key\": \"live_xxx\",
\"api_secret\": \"b\",
\"environment\": \"production\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/provider-auth"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"provider": "lob",
"label": "Primary Lob key",
"api_key": "live_xxx",
"api_secret": "b",
"environment": "production"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "346bd825-e8a8-4d80-8fbd-3951c940a0d2",
"provider": "lob",
"label": "et animi",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a provider credential
requires authentication
Returns a single credential by UUID (secrets masked).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/provider-auth/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/provider-auth/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "78f35162-abc9-4db8-9c74-aab667972087",
"provider": "lob",
"label": "adipisci quidem",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SOVs
Schedules of values, including CSV import.
List schedules of values
requires authentication
Paginated SOVs visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/sovs?project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&pay_application_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&status=architecto&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sovs"
);
const params = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"pay_application_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"status": "architecto",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "2f9db788-8407-4f13-969d-b56e3330acda",
"project_id": "2b3db26a-0028-4ff7-95ee-87c7a238d087",
"pay_application_id": null,
"name": "Schedule of Values",
"line_items": [
{
"item_number": 1,
"description": "transform 24/365 networks",
"scheduled_value": 26301.26,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 2,
"description": "aggregate plug-and-play e-business",
"scheduled_value": 73527.26,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 3,
"description": "streamline best-of-breed communities",
"scheduled_value": 42718.56,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 4,
"description": "streamline virtual vortals",
"scheduled_value": 35174.92,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 5,
"description": "repurpose vertical convergence",
"scheduled_value": 7452.43,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 6,
"description": "implement intuitive e-tailers",
"scheduled_value": 67892.93,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
}
],
"total_contract_amount": "253067.36",
"source": "manual",
"status": "active",
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
},
{
"id": "a2109301-0c33-47d2-86b0-44029ae59f6c",
"project_id": "87ecf023-fd7c-4640-9d2f-393ef47d5b50",
"pay_application_id": null,
"name": "Schedule of Values",
"line_items": [
{
"item_number": 1,
"description": "repurpose transparent metrics",
"scheduled_value": 95837.82,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 2,
"description": "repurpose mission-critical portals",
"scheduled_value": 77640.32,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 3,
"description": "maximize frictionless e-services",
"scheduled_value": 90813.2,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 4,
"description": "envisioneer efficient infomediaries",
"scheduled_value": 28549.11,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 5,
"description": "mesh 24/7 e-commerce",
"scheduled_value": 50319.38,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 6,
"description": "synthesize web-enabled bandwidth",
"scheduled_value": 94610.18,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
}
],
"total_contract_amount": "437770.01",
"source": "manual",
"status": "active",
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a schedule of values
requires authentication
Creates an SOV with 1-1000 line items.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/sovs" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"pay_application_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"name\": \"Base contract SOV\",
\"line_items\": [
{
\"item_number\": \"1\",
\"description\": \"Concrete - foundations\",
\"scheduled_value\": 50000
}
]
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sovs"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"pay_application_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"name": "Base contract SOV",
"line_items": [
{
"item_number": "1",
"description": "Concrete - foundations",
"scheduled_value": 50000
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "cc12bbe1-8993-41b7-a010-de80b46ed922",
"project_id": "3c4cba61-5612-4532-938a-36a89908cf7a",
"pay_application_id": null,
"name": "Schedule of Values",
"line_items": [
{
"item_number": 1,
"description": "exploit scalable supply-chains",
"scheduled_value": 88168.27,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 2,
"description": "optimize front-end e-tailers",
"scheduled_value": 58195.4,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 3,
"description": "orchestrate out-of-the-box web-readiness",
"scheduled_value": 57528.21,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 4,
"description": "seize sexy e-services",
"scheduled_value": 92046.48,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 5,
"description": "engineer compelling e-markets",
"scheduled_value": 72985.28,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 6,
"description": "aggregate granular synergies",
"scheduled_value": 39857.96,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
}
],
"total_contract_amount": "408781.60",
"source": "manual",
"status": "active",
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a schedule of values
requires authentication
Returns a single SOV by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/sovs/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sovs/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "306fbe5a-0557-419b-9224-7bf03f528e6b",
"project_id": "ade9676a-9d68-4060-bf44-c559e8809f96",
"pay_application_id": null,
"name": "Schedule of Values",
"line_items": [
{
"item_number": 1,
"description": "synergize next-generation vortals",
"scheduled_value": 45413.38,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 2,
"description": "reintermediate world-class webservices",
"scheduled_value": 16627.28,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 3,
"description": "enhance back-end content",
"scheduled_value": 7616.01,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
}
],
"total_contract_amount": "69656.67",
"source": "manual",
"status": "active",
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a schedule of values
requires authentication
Deletes the SOV.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/sovs/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sovs/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "SOV deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Import an SOV from CSV
requires authentication
Creates an SOV from an uploaded CSV file (multipart/form-data).
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/sovs/import-csv" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--form "project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c"\
--form "pay_application_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c"\
--form "name=Imported SOV"\
--form "file=@/tmp/phpc0hrjr1lr94u8h61xtc" const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sovs/import-csv"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
const body = new FormData();
body.append('project_id', '9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c');
body.append('pay_application_id', '9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c');
body.append('name', 'Imported SOV');
body.append('file', document.querySelector('input[name="file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201):
{
"data": {
"id": "81a3f51c-25fa-4efb-8ac4-ddd48c0c6454",
"project_id": "89022d9c-8034-4920-afd1-4100ab470c37",
"pay_application_id": null,
"name": "Schedule of Values",
"line_items": [
{
"item_number": 1,
"description": "exploit scalable supply-chains",
"scheduled_value": 88168.27,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 2,
"description": "optimize front-end e-tailers",
"scheduled_value": 58195.4,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 3,
"description": "orchestrate out-of-the-box web-readiness",
"scheduled_value": 57528.21,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 4,
"description": "seize sexy e-services",
"scheduled_value": 92046.48,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 5,
"description": "engineer compelling e-markets",
"scheduled_value": 72985.28,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
},
{
"item_number": 6,
"description": "aggregate granular synergies",
"scheduled_value": 39857.96,
"work_completed_from_previous": 0,
"work_completed_this_period": 0,
"materials_presently_stored": 0,
"total_completed_and_stored": 0,
"percent_complete": 0,
"balance_to_finish": 0,
"retainage": 0
}
],
"total_contract_amount": "408781.60",
"source": "manual",
"status": "active",
"metadata": null,
"created_at": "2026-10-05T15:49:19+00:00",
"updated_at": "2026-10-05T15:49:19+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sandbox
Inspect the API key mode and reset disposable sandbox data.
Get sandbox status
requires authentication
Reports whether the current API key is in live or sandbox mode.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/sandbox" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sandbox"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"mode": "sandbox",
"is_sandbox": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reset sandbox data
requires authentication
Wipes all disposable sandbox records for the caller. Optionally reseeds demo data. Sandbox keys only.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/sandbox/reset" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"sample_data\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/sandbox/reset"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"sample_data": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "Sandbox data reset.",
"reseeded": false
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Search
Cross-resource search.
Search across resources
requires authentication
Case-insensitive partial-match search over organizations, projects and contacts the caller can see.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/search?q=riverside&types[]=projects&types[]=contacts&per_type=5" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"q\": \"b\",
\"types\": [
\"contacts\"
],
\"per_type\": 22
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/search"
);
const params = {
"q": "riverside",
"types[0]": "projects",
"types[1]": "contacts",
"per_type": "5",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"q": "b",
"types": [
"contacts"
],
"per_type": 22
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"organizations": [
{
"id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"name": "Riverside Builders"
}
],
"projects": [
{
"id": "104ad307-aee6-4277-9c47-ebb899a035f5",
"name": "Riverside Medical Center",
"project_number": "PRJ-1042"
}
],
"contacts": []
},
"query": "riverside"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Shipper Auth
Stored credentials for shipping and mail carriers.
List shipper credentials
requires authentication
Stored carrier credentials (secrets are never returned in full).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/shipper-auth?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&carrier=usps&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/shipper-auth"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"carrier": "usps",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "0dcb0594-f4de-4aa6-af1c-f817576255bb",
"carrier": "usps",
"label": "adipisci quidem",
"account_number": "310719",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "df86388d-681d-4f89-9511-b03a8ce34ecf",
"carrier": "ups",
"label": "adipisci molestias",
"account_number": "696081",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a shipper credential
requires authentication
Saves an encrypted carrier API credential.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/shipper-auth" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"carrier\": \"usps\",
\"label\": \"USPS account\",
\"api_key\": \"live_xxx\",
\"api_secret\": \"b\",
\"account_number\": \"0001234\",
\"environment\": \"production\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/shipper-auth"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"carrier": "usps",
"label": "USPS account",
"api_key": "live_xxx",
"api_secret": "b",
"account_number": "0001234",
"environment": "production"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "0dcea519-ea7e-424e-8922-a421c4e48e20",
"carrier": "usps",
"label": "et animi",
"account_number": "089432",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a shipper credential
requires authentication
Returns a single credential by UUID (secrets masked).
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/shipper-auth/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/shipper-auth/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "1a210080-d9cc-437d-b800-591c5cbea122",
"carrier": "usps",
"label": "adipisci quidem",
"account_number": "310719",
"environment": "sandbox",
"is_active": true,
"has_api_key": true,
"has_api_secret": true,
"verified_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Support
Health, credit and usage summaries.
Health check
Liveness probe plus CLS connectivity. No auth required.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/support/health" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/support/health"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"status": "ok",
"time": "2026-09-09T00:00:00+00:00",
"cls": {
"driver": "http",
"reachable": true
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Credit summary
requires authentication
Credit balance and recent usage totals for the calling organization.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/support/credits" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/support/credits"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"balance": 250,
"cls_eligible_balance": 250,
"used_last_30d": 42.5
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Usage summary
requires authentication
API and billable-event counts for the calling organization.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/support/usage" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/support/usage"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"api_calls_last_30d": 1284,
"documents_generated_last_30d": 37,
"mail_sent_last_30d": 12
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Waivers
Conditional and unconditional lien waivers, including signing.
List waivers
requires authentication
Paginated lien waivers visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/waivers?type=architecto&status=architecto&project_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&pay_application_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/waivers"
);
const params = {
"type": "architecto",
"status": "architecto",
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"pay_application_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "12a4eac2-9589-4fff-b86b-36ccad5d5c19",
"project_id": "373471bf-f4bd-48bb-a68e-5a4609437257",
"pay_application_id": "beb6c7a6-2b50-42d2-903f-c911b1626516",
"division_id": "1ca1015e-4d3e-41b2-beee-21e6bd8876fc",
"type": "unconditional",
"status": "pending",
"amount": "122864.55",
"through_date": "2024-07-19",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "c93ae1d2-0662-496c-8279-ca592a4d36b8",
"project_id": "5704fe13-342d-43b3-8c41-eda8bade8b91",
"pay_application_id": "6a2ac7a4-db29-4993-8573-fe2bdda57446",
"division_id": "26d0f33e-8a15-47e4-b59c-2982a93fcc54",
"type": "unconditional",
"status": "pending",
"amount": "120142.13",
"through_date": "2013-10-02",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a waiver
requires authentication
Creates a conditional or unconditional lien waiver.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/waivers" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"division_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"project_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"pay_application_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"conditional\",
\"amount\": 75000,
\"through_date\": \"2026-05-31\",
\"check_number\": \"10482\",
\"exceptions\": \"b\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/waivers"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"division_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"project_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"pay_application_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "conditional",
"amount": 75000,
"through_date": "2026-05-31",
"check_number": "10482",
"exceptions": "b"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "20979b21-c3eb-4c26-afd2-f1b8eebe7688",
"project_id": "4a0d9882-3dec-4143-baaa-8ca6cfc86025",
"pay_application_id": "05c2b85f-a59a-4d2f-a126-3a112041be23",
"division_id": "dfa04dd3-2280-4e99-a7e9-d2ef2e1dd906",
"type": "unconditional",
"status": "pending",
"amount": "122864.55",
"through_date": "2024-07-19",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a waiver
requires authentication
Returns a single waiver by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "18aeb5b5-fe3b-4c17-b9dc-441ff7873371",
"project_id": "4193443a-85dd-4130-b83e-396a1c8090d4",
"pay_application_id": "b1de1cb2-2161-49e4-8e32-d467b8589177",
"division_id": "8ea7eed2-3ecd-4fcd-98ee-de4f37a02564",
"type": "conditional",
"status": "pending",
"amount": "486859.78",
"through_date": "2006-04-05",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a waiver
requires authentication
Applies a partial update to a waiver.
Example request:
curl --request PATCH \
"https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"pay_application_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"type\": \"conditional\",
\"amount\": 75000,
\"through_date\": \"2026-05-31\",
\"check_number\": \"10482\",
\"exceptions\": \"b\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"pay_application_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"type": "conditional",
"amount": 75000,
"through_date": "2026-05-31",
"check_number": "10482",
"exceptions": "b"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "2cff6cf6-f816-4853-a890-b88b2c61066e",
"project_id": "513c3b2c-2616-45a9-bf3d-1c0c7d3af4d7",
"pay_application_id": "ffbd2bba-d19c-41d2-9e6f-6eef2765b274",
"division_id": "5f3ca6b3-70c6-4550-b05c-9a97cbaf981b",
"type": "unconditional",
"status": "pending",
"amount": "122864.55",
"through_date": "2024-07-19",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sign a waiver
requires authentication
Records the signer name and title and marks the waiver signed.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed/sign" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"signee_name\": \"Jane Smith\",
\"signee_title\": \"Controller\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/waivers/6ff8f7f6-1eb3-3525-be4a-3932c805afed/sign"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"signee_name": "Jane Smith",
"signee_title": "Controller"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "557abed2-927f-44a3-8464-fd30bbb3c4fa",
"project_id": "29f8df8d-0240-4ea6-96b6-6bdd2084124c",
"pay_application_id": "83539844-eb4c-4c1b-ab22-5d425d9300fa",
"division_id": "a19e0832-548a-41c5-b38f-40eebe80fce7",
"type": "unconditional",
"status": "pending",
"amount": "497668.34",
"through_date": "1997-11-28",
"check_number": null,
"exceptions": null,
"signee_name": null,
"signee_title": null,
"signed_at": null,
"cls_reference_id": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Webhooks
Outbound subscriptions and inbound provider callbacks.
List webhook subscriptions
requires authentication
Paginated webhook subscriptions visible to the caller.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/webhooks?organization_id=9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c&per_page=15" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks"
);
const params = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": "50657cb6-5ddd-4578-b10d-12e27b653d13",
"organization_id": "445f3fde-a538-4125-862d-4b1733f433a6",
"url": "http://armstrong.net/error-voluptatibus-odio-ut-dignissimos",
"events": [
"pay_app.created",
"pay_app.approved"
],
"is_active": true,
"last_triggered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
},
{
"id": "efaddca8-666f-4a1f-bd07-bad5249de0a8",
"organization_id": "c5099161-9693-42a9-ae6b-1b507255ee69",
"url": "http://tromp.com/molestias-reiciendis-velit-doloremque-quidem-et.html",
"events": [
"pay_app.created",
"pay_app.approved"
],
"is_active": true,
"last_triggered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 15,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a webhook subscription
requires authentication
Registers an HTTPS endpoint for the given event names.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/webhooks" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"organization_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"url\": \"https:\\/\\/example.com\\/webhooks\\/prelien\",
\"events\": [
\"pay_application.approved\"
],
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"organization_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"url": "https:\/\/example.com\/webhooks\/prelien",
"events": [
"pay_application.approved"
],
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"data": {
"id": "f1abc611-cc8e-4105-950d-2b6970c142f1",
"organization_id": "7726d606-ffc1-4542-9d77-ce85cc7d4a17",
"url": "http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
"events": [
"pay_app.created",
"pay_app.approved"
],
"is_active": true,
"last_triggered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retrieve a webhook subscription
requires authentication
Returns a single subscription by UUID.
Example request:
curl --request GET \
--get "https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": "6b406358-2c5e-4a4c-ab88-cbe487465337",
"organization_id": "90bd12c9-31f5-454b-a277-53c20f100cfd",
"url": "http://www.price.org/",
"events": [
"pay_app.created",
"pay_app.approved"
],
"is_active": true,
"last_triggered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a webhook subscription
requires authentication
Partial update of URL, events or active state.
Example request:
curl --request PUT \
"https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"url\": \"https:\\/\\/example.com\\/webhooks\\/prelien\",
\"events\": [
\"pay_application.approved\"
],
\"is_active\": true
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"url": "https:\/\/example.com\/webhooks\/prelien",
"events": [
"pay_application.approved"
],
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": "dbda829b-e4c0-4b07-8958-6d3bba67230e",
"organization_id": "dcfed30b-9935-4c12-aec5-26d65ff05466",
"url": "http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
"events": [
"pay_app.created",
"pay_app.approved"
],
"is_active": true,
"last_triggered_at": null,
"metadata": null,
"created_at": "2026-10-05T15:49:20+00:00",
"updated_at": "2026-10-05T15:49:20+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a webhook subscription
requires authentication
Removes the subscription.
Example request:
curl --request DELETE \
"https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
--header "Authorization: Bearer Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Webhook subscription deleted."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mail-provider callback
Inbound endpoint for the mail provider. HMAC-signed; not called by API clients.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/webhooks/mail-provider" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}"const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/mail-provider"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"message": "Webhook processed."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CLS fulfillment-status callback
Inbound endpoint for CLS research status updates. HMAC-signed; not called by API clients.
Example request:
curl --request POST \
"https://api.prelienpro.com/api/v1/api/v1/webhooks/cls/fulfillment-status" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "X-Organization-UUID: {YOUR_ORGANIZATION_UUID}" \
--data "{
\"fulfillment_request_id\": \"9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c\",
\"status\": \"fulfilled\",
\"payment_required\": {
\"recipients\": 1
},
\"status_reason\": \"n\",
\"last_error\": \"g\",
\"cls_resource_type\": \"notice\",
\"cls_resource_id\": \"cls_ntc_88213\",
\"refund_decision\": \"none\",
\"refund_amount\": 12,
\"refund_reason\": \"m\"
}"
const url = new URL(
"https://api.prelienpro.com/api/v1/api/v1/webhooks/cls/fulfillment-status"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Organization-UUID": "{YOUR_ORGANIZATION_UUID}",
};
let body = {
"fulfillment_request_id": "9b7e0e2a-1c3d-4f5a-8b6c-2d4e6f8a0b1c",
"status": "fulfilled",
"payment_required": {
"recipients": 1
},
"status_reason": "n",
"last_error": "g",
"cls_resource_type": "notice",
"cls_resource_id": "cls_ntc_88213",
"refund_decision": "none",
"refund_amount": 12,
"refund_reason": "m"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "ok"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.