Skip to content

Endpoints Overview

The Quickli Public API provides RESTful endpoints for managing mortgage scenarios, calculating servicing, and querying lender data.

https://api.quickli.com/api/v1
EndpointMethodDescriptionStatus
/userGETGet authenticated user info and accessible teams
EndpointMethodDescriptionStatus
/scenariosPOSTCreate a new scenario
/scenarios/{id}GETGet scenario by ID
/scenarios/{id}PUTUpdate an existing scenario
EndpointMethodDescriptionStatus
/compute/{scenarioId}POSTCalculate servicing for a lender
EndpointMethodDescriptionStatus
/productsGETGet lender products
EndpointMethodDescriptionStatus
/policiesGETQuery lending policies

All endpoints follow RESTful conventions:

  • GET - Retrieve resources (read-only, idempotent)
  • POST - Create new resources
  • PUT - Update existing resources
  • DELETE - Remove resources

All endpoints require RSA signature-based authentication with the following headers:

X-Auth-Client-ID: {clientId}
X-Auth-Access-Token: {accessToken}
X-Auth-Timestamp: {timestamp}
X-Auth-Nonce: {nonce}
X-Auth-Signature: {signature}

See the authentication guide for details on signing requests.

All successful responses follow this structure:

{
"data": {
/* response data */
},
"meta": {
"timestamp": "2025-11-03T10:30:00.000Z",
"version": "1.0.0",
"count": 10
// Optional: for list endpoints
}
}

All errors follow this structure:

{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": {
/* optional additional info */
},
"timestamp": "2025-11-03T10:30:00.000Z"
}
}

See the error handling guide for complete error documentation.

Terminal window
curl -X GET https://api.quickli.com/api/v1/user \
-H "X-Auth-Client-ID: {clientId}" \
-H "X-Auth-Access-Token: {accessToken}" \
-H "X-Auth-Timestamp: {timestamp}" \
-H "X-Auth-Nonce: {nonce}" \
-H "X-Auth-Signature: {signature}"

Response:

{
"data": {
"email": "broker@example.com",
"teams": [
{
"id": "507f1f77bcf86cd799439011",
"name": "Team Alpha"
}
]
}
}
Terminal window
curl -X POST https://api.quickli.com/api/v1/scenarios \
-H "X-Auth-Client-ID: {clientId}" \
-H "X-Auth-Access-Token: {accessToken}" \
-H "X-Auth-Timestamp: {timestamp}" \
-H "X-Auth-Nonce: {nonce}" \
-H "X-Auth-Signature: {signature}" \
-H "Content-Type: application/json" \
-d '{
"description": "First home buyer scenario",
"scenario": {
"households": [{
"id": "h1",
"status": "single",
"num_adults": 1,
"num_dependants": 0,
"postcode": 2000,
"shared_with_households": []
}]
}
}'

Response:

{
"data": {
"id": "507f1f77bcf86cd799439011",
"description": "First home buyer scenario",
"scenario": {
/* full scenario with defaults */
}
}
}
Terminal window
curl -X POST https://api.quickli.com/api/v1/compute/507f1f77bcf86cd799439011 \
-H "X-Auth-Client-ID: {clientId}" \
-H "X-Auth-Access-Token: {accessToken}" \
-H "X-Auth-Timestamp: {timestamp}" \
-H "X-Auth-Nonce: {nonce}" \
-H "X-Auth-Signature: {signature}" \
-H "Content-Type: application/json" \
-d '{
"lenderName": "cba",
"addToRates": 0
}'

Response:

{
"data": {
"lender_name": "cba",
"does_service": true,
"max_borrowing_capacity": 720000,
"net_monthly_surplus": 1245.50,
"validations": [
...
]
}
}
Terminal window
curl -X GET 'https://api.quickli.com/api/v1/products?lenders=cba,westpac' \
-H "X-Auth-Client-ID: {clientId}" \
-H "X-Auth-Access-Token: {accessToken}" \
-H "X-Auth-Timestamp: {timestamp}" \
-H "X-Auth-Nonce: {nonce}" \
-H "X-Auth-Signature: {signature}"

Response:

{
"data": [
{
"lender": "cba",
"productType": "variable_package",
"productName": "Wealth Package",
"setupFee": 600,
"ongoingFee": 395
}
],
"meta": {
"count": 2
}
}
Terminal window
curl -X GET 'https://api.quickli.com/api/v1/policies?lenders=cba&triggers=payg,commission' \
-H "X-Auth-Client-ID: {clientId}" \
-H "X-Auth-Access-Token: {accessToken}" \
-H "X-Auth-Timestamp: {timestamp}" \
-H "X-Auth-Nonce: {nonce}" \
-H "X-Auth-Signature: {signature}"

Response:

{
"data": [
{
"lender": "cba",
"triggers": [
"payg",
"commission"
],
"content": "# PAYG Income Assessment\n\n...",
"lastVerifiedOn": "2025-10-15T00:00:00.000Z"
}
]
}
  1. Get teams: GET /user to see available teams
  2. Create scenario: POST /scenarios with team ID
  3. Calculate servicing: POST /compute/{scenarioId} with lender
  4. Review results: Check does_service and max_borrowing_capacity
  1. Create scenario: POST /scenarios once
  2. Calculate for multiple lenders: Call POST /compute/{scenarioId} for each lender
  3. Compare results: Analyze rates, capacity, and validation results
  4. Update scenario: PUT /scenarios/{id} to adjust if needed
  1. Query products: GET /products to see available products and rates
  2. Query policies: GET /policies to understand assessment criteria
  3. Build compliant scenario: Create scenario that meets policy requirements
  4. Validate: Run servicing calculation to confirm

Rate limiting is not currently enforced but will be implemented in future releases.

Best practices:

  • Batch operations where possible
  • Cache responses appropriately
  • Implement exponential backoff for retries

List endpoints (coming soon) will support pagination:

GET /scenarios?limit=50&offset=0
ParameterDescriptionDefault
limitNumber of results per page50
offsetNumber of results to skip0

List endpoints will support filtering and sorting:

GET /scenarios?teamId={teamId}&sort=created&order=desc

The API uses URL-based versioning (/api/v1/). All endpoints in this version are backwards-compatible within the v1 namespace.

Breaking changes will result in a new version (/api/v2/).

CodeMeaningDescription
200OKRequest succeeded
201CreatedResource created successfully
400Bad RequestInvalid request format
401UnauthorizedAuthentication failed
403ForbiddenNot authorized for resource
404Not FoundResource doesn’t exist
422Validation ErrorRequest body validation failed
500Server ErrorUnexpected server error

Last updated: 2025-11-19