curl --request GET \
--url https://www.presolve.com/api/v1/leads/intake-reviews \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://www.presolve.com/api/v1/leads/intake-reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/leads/intake-reviews"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"leads": [
{
"id": "<string>",
"caseId": "<string>",
"isIntakeReview": true,
"firstName": "<string>",
"lastName": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"city": "<string>",
"state": "<string>",
"caseSource": "<string>",
"leadStatus": "under_review_with_firm",
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"nextCursor": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}List pending intake reviews
Lists eligible pre-handoff intake reviews assigned to the selected firm through the newest non-deleted lead. Uses the same review eligibility as the portal: unowned, non-deleted Presolve-source cases in review-compatible stages with under_review_with_firm or waiting_for_retainer status. Returns limited list metadata only; it does not grant access to lead detail, case detail, documents, history, or mutations. Both statuses display as Under Review in the portal; the portal Lead Status column is a separate case-status field. caseSource filters case origin, not UTM attribution. nextCursor is null at exhaustion. This is a current inventory, not a change feed: rescan it to detect reassignment, handoff, or an older lead entering review. Combine with owned cases/leads and deduplicate by caseId (case id for /cases); separate requests are not an atomic snapshot. See /authorization.
Supports one selected organization via organizationId. Omit it to use the key’s organization. HQ descendant access requires an active acting attorney with hq:view_child_orgs, cases:view, cases:view_all, hq:view_all_cases. Existing key scopes still apply. The selector requires an integration API key; legacy partner/OIDC routing is unchanged. Repeat the selector on every cursor page, related mutation, upload completion, and detail/download request. See HQ authorization.
Requires the leads:read scope. Rate tier: read.
curl --request GET \
--url https://www.presolve.com/api/v1/leads/intake-reviews \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://www.presolve.com/api/v1/leads/intake-reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/leads/intake-reviews"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"leads": [
{
"id": "<string>",
"caseId": "<string>",
"isIntakeReview": true,
"firstName": "<string>",
"lastName": "<string>",
"caseType": "<string>",
"subCaseType": "<string>",
"city": "<string>",
"state": "<string>",
"caseSource": "<string>",
"leadStatus": "under_review_with_firm",
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"nextCursor": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}Authorizations
Query Parameters
Select one organization for this request. Defaults to the key organization. An HQ key may select an active descendant when its active acting attorney has the required HQ and resource permissions. Repeat the same organizationId on related mutations, upload completion, detail requests, and every cursor page. See /authorization.