# Presolve Documentation > Help for Presolve users, developer integration guides, and API reference. - [Presolve Help Center](https://www.presolve.com/docs/help/index.md): Practical guides for attorneys, paralegals, accounting staff, and firm administrators. - [Find your way around Presolve](https://www.presolve.com/docs/help/navigation.md): Locate matters, documents, calendars, accounting, and your firm tools. - [Prepare a useful support request](https://www.presolve.com/docs/help/support.md): Describe the affected page, expected result, and steps that led to the issue. - [Search across Presolve](https://www.presolve.com/docs/help/search.md): Find cases and contacts and use common action shortcuts. - [Follow a lead through the case lifecycle](https://www.presolve.com/docs/help/leads/lifecycle.md): Learn when leads appear, how a signed retainer converts a lead, and where active, closed, and referred matters belong. - [Work in a custom matter](https://www.presolve.com/docs/help/matters/custom-workspace.md): Find your firm's intake answers, custom sections, and review checklists. - [Apply and remove case tags](https://www.presolve.com/docs/help/matters/tags.md): Use your organization’s tags to label a matter. - [Complete a custom matter checklist](https://www.presolve.com/docs/help/matters/checklists.md): Use the checklist your firm has added to a matter workspace. - [Review a client profile and linked cases](https://www.presolve.com/docs/help/people/clients.md): Find client information, update a preference, and open the right matter. - [Find and maintain contact details](https://www.presolve.com/docs/help/people/contacts.md): Search the directory and distinguish categories, tags, case roles, and affiliations. - [Find your way around a personal-injury matter](https://www.presolve.com/docs/help/personal-injury/matter-workspace.md): Locate intake, insurance, medical evidence, negotiations, and shared case records. - [Review medical analysis views](https://www.presolve.com/docs/help/personal-injury/medical-analysis.md): Navigate injury information, treatment timelines, and document filters. - [Prepare and review a medical chronology](https://www.presolve.com/docs/help/personal-injury/medical-chronology.md): Upload medical source records, prepare them for generation, and understand chronology versions and evidence. - [Review a matter's activity records](https://www.presolve.com/docs/help/records/review-activity.md): Find email, call logs, and notes using record types, search, and categories. - [Save an internal case note](https://www.presolve.com/docs/help/records/create-note.md): Record a clear note and distinguish saving from emailing copied team members. - [Log a case call](https://www.presolve.com/docs/help/records/calls.md): Record who called, when it happened, its outcome, and the follow-up needed. - [Call from your browser](https://www.presolve.com/docs/help/records/teams-browser-calling.md): Call a case contact or another number, answer incoming calls, and correct the caller, case, and role. - [Call through the Microsoft Teams app](https://www.presolve.com/docs/help/records/teams-app-calling.md): Launch Teams from a case, contact, or dialer, save notes in Presolve, and link them to the imported call. - [Review Teams calls and recordings](https://www.presolve.com/docs/help/records/teams-call-records.md): Find imported calls, resolve ambiguous case matches, and review notes, recordings, and transcripts. - [Compose an email from a case](https://www.presolve.com/docs/help/records/email.md): Review the sending mailbox, recipients, template values, and attachments before sending. - [Organize files in Library](https://www.presolve.com/docs/help/documents/library.md): Create a folder, move a file, and confirm its new location. - [Create and save a matter document](https://www.presolve.com/docs/help/documents/create-document.md): Start a blank document from a case and reopen your saved work. - [Add or remove document tags](https://www.presolve.com/docs/help/documents/tags.md): Label a file so staff can recognize its contents. - [Prepare an e-sign template](https://www.presolve.com/docs/help/documents/esign-templates.md): Upload a reusable document, place recipient fields, and verify the saved template. - [Follow a litigation cost from invoice to recovery](https://www.presolve.com/docs/help/accounting/litigation-cost-lifecycle.md): Understand who reviews a cost, how it is paid, when QuickBooks is involved, and how settlement recovery is recorded. - [Review an invoice and stage its expenses](https://www.presolve.com/docs/help/accounting/invoice-review.md): Follow an invoice through conditional approval and into the payment queue. - [Record a case expense and review litigation costs](https://www.presolve.com/docs/help/accounting/expenses.md): Choose the payee, payment timing, and settlement treatment without duplicating a charge. - [Prepare a resolution and hand it to accounting](https://www.presolve.com/docs/help/accounting/resolutions.md): Record settlement terms as a draft, let accounting complete deposit routing, and understand editing after activation. - [Record a check and its destinations](https://www.presolve.com/docs/help/accounting/checks.md): Record incoming funds, allocate amounts, and review the related disbursements. - [Review a recorded disbursement](https://www.presolve.com/docs/help/accounting/disbursements.md): Check the payee, source check, amount, and individual payment status. - [Record and review time entries](https://www.presolve.com/docs/help/accounting/timekeeping.md): Associate work with a case, review its rate, and inspect timekeeping totals. - [Publish a workflow and check its run](https://www.presolve.com/docs/help/automations/publish-and-review.md): Understand draft changes, live activation, and the result of a workflow run. - [Set up an invoice-staging review workflow](https://www.presolve.com/docs/help/automations/invoice-staging.md): Connect an invoice-created event to a designated reviewer and payment staging. - [Ask a question and refine the answer](https://www.presolve.com/docs/help/ai/ask-presolve.md): Use Ask Presolve for a focused conversation and return to it later. - [Choose and prepare an AI tool](https://www.presolve.com/docs/help/ai/tool-chest.md): Find a tool, review its inputs, and check the resulting work. - [Create, assign, and track a task](https://www.presolve.com/docs/help/tasks/create-and-track.md): Set up work for a teammate and verify its status. - [Complete, reopen, or cancel a task](https://www.presolve.com/docs/help/tasks/statuses.md): Record the state of the work and find it in the corresponding task view. - [Schedule and find a calendar event](https://www.presolve.com/docs/help/tasks/calendar.md): Create a one-time event from a matter and review its saved details. - [Create and save a report](https://www.presolve.com/docs/help/reporting/build-report.md): Start from a template, choose columns, and verify the results. - [Filter a report and check its scope](https://www.presolve.com/docs/help/reporting/filters.md): Use rules to narrow results without mistaking the filter for the data itself. - [Add charts and summary rows](https://www.presolve.com/docs/help/reporting/charts.md): Summarize the same records you have checked in the report table. - [Include related records in a report](https://www.presolve.com/docs/help/reporting/joins.md): Understand case and people relationships before interpreting row counts. - [Build a home dashboard](https://www.presolve.com/docs/help/reporting/dashboards.md): Turn saved reports into charts, tables, and summary widgets. - [Set up an office wallboard](https://www.presolve.com/docs/help/reporting/wallboards.md): Build a dashboard from Home and use report widgets for an office display. - [Export or schedule a report](https://www.presolve.com/docs/help/reporting/delivery.md): Review the result before downloading it or scheduling automatic email delivery. - [Review the firm portfolio over time](https://www.presolve.com/docs/help/reporting/portfolio.md): Compare live open matters with saved snapshots and interpret projected-fee totals. - [Find the right firm setting](https://www.presolve.com/docs/help/admin/settings-overview.md): Locate intake, document, notification, contact-role, and integration configuration. - [Manage staff roles and permissions](https://www.presolve.com/docs/help/admin/roles.md): Separate job labels, application permissions, and case relationships. - [Create custom case-contact roles](https://www.presolve.com/docs/help/admin/contact-roles.md): Define relationships and choose whether one or multiple contacts can fill a role. - [Configure a custom matter workspace](https://www.presolve.com/docs/help/admin/custom-matters.md): Connect a case type, published intake, and custom matter layout. - [Build and publish a custom intake](https://www.presolve.com/docs/help/admin/intake-builder.md): Create questions and assign the published intake to the intended case types. - [Show an intake question conditionally](https://www.presolve.com/docs/help/admin/intake-conditions.md): Ask a follow-up question only when an earlier answer makes it relevant. - [Configure task and event categories](https://www.presolve.com/docs/help/admin/task-types.md): Add a task category and make it available to staff. - [Configure case tags and automatic actions](https://www.presolve.com/docs/help/admin/tag-automation.md): Manage reusable labels and the actions attached to future tag additions. - [Configure folders and e-sign defaults](https://www.presolve.com/docs/help/admin/document-defaults.md): Set case folders, document types, reminders, and staff notification routing. - [Create reusable email templates](https://www.presolve.com/docs/help/admin/email-templates.md): Set message content, variables, sender defaults, and attachments. - [Choose notification channels](https://www.presolve.com/docs/help/admin/notifications.md): Review personal email and SMS preferences and the in-app bell. - [Manage deadline rules and calendars](https://www.presolve.com/docs/help/admin/deadlines.md): Understand rule packs, named case events, and organization calendar exceptions. - [Configure referral defaults](https://www.presolve.com/docs/help/admin/referrals.md): Review agreement defaults, follow-up schedules, and automatic acceptance settings. - [Find and review integrations](https://www.presolve.com/docs/help/integrations/overview.md): Locate provider settings and distinguish a connection from a verified result. - [Understand communication integrations](https://www.presolve.com/docs/help/integrations/communications.md): Identify the provider behind email, call, text, and meeting records. - [Review file and accounting integrations](https://www.presolve.com/docs/help/integrations/business-tools.md): Find SharePoint mappings and the appropriate QuickBooks workflow. - [Connect and review email accounts](https://www.presolve.com/docs/help/integrations/email.md): Find Gmail and Outlook account controls and check case email records. - [Connect your Microsoft Teams account](https://www.presolve.com/docs/help/integrations/microsoft-teams-phone.md): Connect your firm's work account, then choose browser calling or the Teams app. - [Manage Teams Phone for your firm](https://www.presolve.com/docs/help/integrations/teams-phone-admin.md): Approve firm access, map employees, select shared lines, and manage call import and recording settings. - [Teams Phone: IT and support](https://www.presolve.com/docs/help/integrations/teams-phone-troubleshooting.md): Resolve approval, account, calling, sync, and recording issues with the right administrator or support team. - [Review text-messaging setup](https://www.presolve.com/docs/help/integrations/text-messaging.md): Choose the configured provider and understand why case texting may be unavailable. - [Review RingCX lead and call settings](https://www.presolve.com/docs/help/integrations/ringcx.md): Understand account, import, routing, and recording controls. - [Review Fireflies meeting capture](https://www.presolve.com/docs/help/integrations/fireflies.md): Find connection controls and verify meeting notes on the intended case. - [Review SharePoint connections and mappings](https://www.presolve.com/docs/help/integrations/sharepoint.md): Separate account connection, library mapping, and case-folder binding. - [Review QuickBooks setup and export records](https://www.presolve.com/docs/help/integrations/quickbooks.md): Find mappings and distinguish Desktop exports from Online synchronization. - [Review Case Sync configuration](https://www.presolve.com/docs/help/integrations/case-sync.md): Hand off scheduled case exchange to the integration owner. - [Request and review API access](https://www.presolve.com/docs/help/integrations/api-keys.md): Understand the credential form and hand off scoped access to an integration owner. - [Find your way around family-law matters](https://www.presolve.com/docs/help/practices/family-law.md): Locate divorce and custody workspaces and understand recorded actions. - [Work through a lemon-law matter](https://www.presolve.com/docs/help/practices/lemon-law.md): Locate screening, engagement, litigation, settlement, and closeout records. - [Track lemon-law engagement and documents](https://www.presolve.com/docs/help/practices/lemon-engagement.md): Record retainer progress, authorizations, chronology, and received files. - [Organize an O-1A matter](https://www.presolve.com/docs/help/practices/o1.md): Review beneficiary information, criterion-based evidence, letters, and packet files. - [Organize a TN matter](https://www.presolve.com/docs/help/practices/tn.md): Review filing facts, evidence categories, support letters, and packet preparation. - [Navigate an NSA matter](https://www.presolve.com/docs/help/practices/nsa.md): Review provider identity, dispute details, negotiations, and milestone dates. - [Record and review an NSA offer](https://www.presolve.com/docs/help/practices/nsa-offers.md): Keep the offer phase, party, status, amount, and dates together. - [What's new in Presolve](https://www.presolve.com/docs/changelog.md): Discover new features, useful improvements, and fixes that make your firm's day-to-day work easier. - [Introduction](https://www.presolve.com/docs/introduction.md): The Grand Charter public API — org-scoped programmatic access to cases, leads, documents, tasks, billing, settlement funds, and more. - [Authentication](https://www.presolve.com/docs/authentication.md): How to authenticate requests to the Grand Charter public API with an integration API key. - [Service accounts](https://www.presolve.com/docs/service-accounts.md): The non-human principal behind every integration API key — identity, acting attorney, lifecycle, and management surfaces. - [Scopes](https://www.presolve.com/docs/scopes.md): The complete permission vocabulary for integration API keys. - [Organizations, HQ, and permissions](https://www.presolve.com/docs/authorization.md): How integration-key scopes, organization boundaries, acting attorneys, and reporting RBAC work together. - [Events & webhooks overview](https://www.presolve.com/docs/webhooks/overview.md): How the durable event feed and lossy wakeup webhooks fit together. - [Event catalog](https://www.presolve.com/docs/webhooks/event-catalog.md): Every event type that can appear on the feed or be selected by a webhook subscription. - [Delivery](https://www.presolve.com/docs/webhooks/delivery.md): Wakeup payloads, signature verification, and retry semantics for webhook deliveries. - [Reporting overview](https://www.presolve.com/docs/reporting/overview.md): Two paths for getting data out in bulk — saved report execution and async export jobs. - [Report definitions](https://www.presolve.com/docs/reporting/report-definitions.md): Execute saved reports, select authorized offices, and understand report-owner fields and filters. - [Exports](https://www.presolve.com/docs/reporting/exports.md): Asynchronous bulk exports with presigned downloads. - [Troubleshoot report access and missing data](https://www.presolve.com/docs/reporting/troubleshooting.md): Separate credential, sharing, organization scope, field, and saved-filter issues. - [Describe the calling service account](https://www.presolve.com/docs/api-reference/platform/describe-the-calling-service-account.md): Credential health-check: key id/name/prefix, granted scopes, acting attorney, expiry, and the owning organization. Any valid integration key may call this — no specific scope required. - [Get the organization profile](https://www.presolve.com/docs/api-reference/org-&-team/get-the-organization-profile.md): Requires the `org:read` scope. Rate tier: `read`. - [List organization members](https://www.presolve.com/docs/api-reference/org-&-team/list-organization-members.md): Requires the `org:read` scope. Rate tier: `read`. - [Get member detail](https://www.presolve.com/docs/api-reference/org-&-team/get-member-detail.md): Requires the `org:read` scope. Rate tier: `read`. - [List org roles and permission sets](https://www.presolve.com/docs/api-reference/org-&-team/list-org-roles-and-permission-sets.md): Requires the `org:read` scope. Rate tier: `read`. - [List pending member invites](https://www.presolve.com/docs/api-reference/org-&-team/list-pending-member-invites.md): Requires the `org:manage` scope. Rate tier: `read`. - [Invite a member](https://www.presolve.com/docs/api-reference/org-&-team/invite-a-member.md): Requires the `org:manage` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Rescind a member invite](https://www.presolve.com/docs/api-reference/org-&-team/rescind-a-member-invite.md): Requires the `org:manage` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List the org’s service accounts (integration keys)](https://www.presolve.com/docs/api-reference/org-&-team/list-the-org’s-service-accounts-integration-keys.md): Metadata only — secrets are never returned after creation. - [Create a service account](https://www.presolve.com/docs/api-reference/org-&-team/create-a-service-account.md): Standard scopes only — elevated (PHI/PII) scopes are rejected on this surface and can only be granted by platform admins. The secret is returned once, in this response only. - [Revoke a service account](https://www.presolve.com/docs/api-reference/org-&-team/revoke-a-service-account.md): Requires the `org:manage` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Reconfigure a service account](https://www.presolve.com/docs/api-reference/org-&-team/reconfigure-a-service-account.md): Name, standard scopes, acting attorney, and webhook hosts — without rotating the secret. - [List / search cases](https://www.presolve.com/docs/api-reference/cases/list-search-cases.md): With no filter parameters this remains the creation-ordered minimal sync inventory shipped for document-sync integrations. With view=full or any filter it returns the full case serializer. The legacy documents:read scope keeps working on this route alongside cases:read. - [Create a case](https://www.presolve.com/docs/api-reference/cases/create-a-case.md): Creates a case (plus plaintiff and intake survey details) in the caller’s organization through the canonical write-once ownership command. Partner keys and OIDC bearers keep working unchanged; integration keys require cases:write and the standard X-Idempotency-Key contract. - [Get case detail](https://www.presolve.com/docs/api-reference/cases/get-case-detail.md): Hydrated case detail: plaintiff summary, case attorneys, stage/status, tags. ETag derived from updatedAt. - [Archive (soft-delete) a case](https://www.presolve.com/docs/api-reference/cases/archive-soft-delete-a-case.md): Requires the `cases:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update mutable case fields](https://www.presolve.com/docs/api-reference/cases/update-mutable-case-fields.md): Updates mutable case fields (financial projections, scoring, descriptions). Case-state changes are NOT accepted here — state moves only through dedicated transition endpoints. Legacy partner keys and OIDC bearers keep working; integration keys require cases:write. - [Restore an archived case](https://www.presolve.com/docs/api-reference/cases/restore-an-archived-case.md): Requires the `cases:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Request a case turn-down](https://www.presolve.com/docs/api-reference/cases/request-a-case-turn-down.md): Enters the pending turn-down flow (72h window; completion is internal-only). A rejected initiation maps to 409 INVALID_STATE_TRANSITION. Callers can never write a final turned-down status directly. - [Cancel a pending turn-down](https://www.presolve.com/docs/api-reference/cases/cancel-a-pending-turn-down.md): The rescue path — atomically restores the prior case state. - [List case history entries](https://www.presolve.com/docs/api-reference/cases/list-case-history-entries.md): Requires the `cases:read` scope. Rate tier: `read`. - [List case tags](https://www.presolve.com/docs/api-reference/cases/list-case-tags.md): Requires the `cases:read` scope. Rate tier: `read`. - [Add a case tag](https://www.presolve.com/docs/api-reference/cases/add-a-case-tag.md): Idempotent by design. - [Remove a case tag](https://www.presolve.com/docs/api-reference/cases/remove-a-case-tag.md): Requires the `cases:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List case attorneys](https://www.presolve.com/docs/api-reference/cases/list-case-attorneys.md): Requires the `cases:read` scope. Rate tier: `read`. - [Change the primary attorney](https://www.presolve.com/docs/api-reference/cases/change-the-primary-attorney.md): Fully validated ownership command (eligibility, optimistic staleness, audit). expectedAttorneyId is the optimistic-concurrency token — a stale value returns 409. Organization changes are not exposed (write-once; cross-org movement is the referrals domain). - [Add / update a secondary attorney](https://www.presolve.com/docs/api-reference/cases/add-update-a-secondary-attorney.md): Requires the `cases:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Remove a secondary attorney](https://www.presolve.com/docs/api-reference/cases/remove-a-secondary-attorney.md): Requires the `cases:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List / filter leads](https://www.presolve.com/docs/api-reference/leads/list-filter-leads.md): Requires the `leads:read` scope. Rate tier: `read`. - [Create a lead](https://www.presolve.com/docs/api-reference/leads/create-a-lead.md): Creates a lead + case + plaintiff + initial survey details, pinned to the validated receiving organization (no marketplace routing). leadStatus accepts new_lead (the default) and test_lead; the retired spelling PendingLead is accepted and stored as new_lead. screened_needs_match returns HTTP 400 bef… - [Get lead detail](https://www.presolve.com/docs/api-reference/leads/get-lead-detail.md): Includes linked caseId and UTM/attribution fields. Distribution internals are never serialized. - [Update a lead](https://www.presolve.com/docs/api-reference/leads/update-a-lead.md): Updates lead and linked case fields. Status changes route through the guarded transition machinery — use POST /leads/{leadId}/transitions for status moves. - [List lead status history](https://www.presolve.com/docs/api-reference/leads/list-lead-status-history.md): Requires the `leads:read` scope. Rate tier: `read`. - [Transition lead status (guarded)](https://www.presolve.com/docs/api-reference/leads/transition-lead-status-guarded.md): Accepts matched_to_firm_match_direct (or its legacy alias PromotedToCase), waiting_for_retainer, and pending_turndown. Pending turn-down enters the 72h flow. Unsupported targets fail validation with 400; a supported target rejected by its transition guard returns 409. - [Cancel a pending lead turn-down](https://www.presolve.com/docs/api-reference/leads/cancel-a-pending-lead-turn-down.md): Requires the `leads:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List the org’s lead sub-status definitions](https://www.presolve.com/docs/api-reference/leads/list-the-org’s-lead-sub-status-definitions.md): Requires the `leads:read` scope. Rate tier: `read`. - [List the org’s turn-down reasons](https://www.presolve.com/docs/api-reference/leads/list-the-org’s-turn-down-reasons.md): Requires the `leads:read` scope. Rate tier: `read`. - [List / search clients](https://www.presolve.com/docs/api-reference/clients/list-search-clients.md): Requires the `clients:read` scope. Rate tier: `read`. - [Create a standalone client](https://www.presolve.com/docs/api-reference/clients/create-a-standalone-client.md): Requires the `clients:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get client detail](https://www.presolve.com/docs/api-reference/clients/get-client-detail.md): Requires the `clients:read` scope. Rate tier: `read`. - [Update a client](https://www.presolve.com/docs/api-reference/clients/update-a-client.md): Requires the `clients:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List cases for a client](https://www.presolve.com/docs/api-reference/clients/list-cases-for-a-client.md): Requires the `clients:read` scope. Rate tier: `read`. - [List client relationships](https://www.presolve.com/docs/api-reference/clients/list-client-relationships.md): Related persons (guardian, spouse, …). - [List / search contacts](https://www.presolve.com/docs/api-reference/contacts/list-search-contacts.md): Requires the `contacts:read` scope. Rate tier: `read`. - [Create a contact](https://www.presolve.com/docs/api-reference/contacts/create-a-contact.md): Requires the `contacts:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get contact detail](https://www.presolve.com/docs/api-reference/contacts/get-contact-detail.md): Requires the `contacts:read` scope. Rate tier: `read`. - [Soft-delete a contact](https://www.presolve.com/docs/api-reference/contacts/soft-delete-a-contact.md): Requires the `contacts:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update a contact](https://www.presolve.com/docs/api-reference/contacts/update-a-contact.md): Requires the `contacts:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List cases a contact is assigned to](https://www.presolve.com/docs/api-reference/contacts/list-cases-a-contact-is-assigned-to.md): Requires the `contacts:read` scope. Rate tier: `read`. - [List contacts on a case](https://www.presolve.com/docs/api-reference/contacts/list-contacts-on-a-case.md): Requires the `contacts:read` scope. Rate tier: `read`. - [Assign a contact to a case](https://www.presolve.com/docs/api-reference/contacts/assign-a-contact-to-a-case.md): Requires the `contacts:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Unassign a contact from a case](https://www.presolve.com/docs/api-reference/contacts/unassign-a-contact-from-a-case.md): Requires the `contacts:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List contact assignment types](https://www.presolve.com/docs/api-reference/contacts/list-contact-assignment-types.md): Built-in plus org-custom assignment types (config read). - [List / filter documents org-wide](https://www.presolve.com/docs/api-reference/documents/list-filter-documents-org-wide.md): Requires the `documents:read` scope. Rate tier: `read`. - [Merged folder + document snapshot for a case](https://www.presolve.com/docs/api-reference/documents/merged-folder-+-document-snapshot-for-a-case.md): Requires the `documents:read` scope. Rate tier: `read`. - [Get document metadata](https://www.presolve.com/docs/api-reference/documents/get-document-metadata.md): Returns the document with its revision as an ETag. - [Soft-delete a document](https://www.presolve.com/docs/api-reference/documents/soft-delete-a-document.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Requires `If-Match: ""`; a stale revision returns 409 `STALE_REVISION` and successful response… - [Rename / move a document](https://www.presolve.com/docs/api-reference/documents/rename-move-a-document.md): Requires If-Match with the current revision; stale revisions return 409 STALE_REVISION. - [Restore a soft-deleted document](https://www.presolve.com/docs/api-reference/documents/restore-a-soft-deleted-document.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Requires `If-Match: ""`; a stale revision returns 409 `STALE_REVISION` and successful response… - [Download document content](https://www.presolve.com/docs/api-reference/documents/download-document-content.md): Requires the `documents:read` scope. Rate tier: `read`. - [List document versions](https://www.presolve.com/docs/api-reference/documents/list-document-versions.md): Requires the `documents:read` scope. Rate tier: `read`. - [Download a prior version](https://www.presolve.com/docs/api-reference/documents/download-a-prior-version.md): Requires the `documents:read` scope. Rate tier: `read`. - [List document tags](https://www.presolve.com/docs/api-reference/documents/list-document-tags.md): Requires the `documents:read` scope. Rate tier: `read`. - [Add a document tag](https://www.presolve.com/docs/api-reference/documents/add-a-document-tag.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Remove a document tag](https://www.presolve.com/docs/api-reference/documents/remove-a-document-tag.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Batch-move documents / folders](https://www.presolve.com/docs/api-reference/documents/batch-move-documents-folders.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Batch-copy documents](https://www.presolve.com/docs/api-reference/documents/batch-copy-documents.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Batch soft-delete documents](https://www.presolve.com/docs/api-reference/documents/batch-soft-delete-documents.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Move a document to another case](https://www.presolve.com/docs/api-reference/documents/move-a-document-to-another-case.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Requires `If-Match: ""`; a stale revision returns 409 `STALE_REVISION` and successful response… - [Get the full folder hierarchy for a case](https://www.presolve.com/docs/api-reference/documents/get-the-full-folder-hierarchy-for-a-case.md): Requires the `documents:read` scope. Rate tier: `read`. - [Create a folder](https://www.presolve.com/docs/api-reference/documents/create-a-folder.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Soft-delete a folder](https://www.presolve.com/docs/api-reference/documents/soft-delete-a-folder.md): Requires If-Match with the current revision. - [Rename / move a folder](https://www.presolve.com/docs/api-reference/documents/rename-move-a-folder.md): Requires If-Match with the current revision. - [Restore a soft-deleted folder](https://www.presolve.com/docs/api-reference/documents/restore-a-soft-deleted-folder.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Requires `If-Match: ""`; a stale revision returns 409 `STALE_REVISION` and successful response… - [Mint a presigned upload session](https://www.presolve.com/docs/api-reference/documents/mint-a-presigned-upload-session.md): Create-or-replace presigned upload (max 2 GiB). Complete with POST /document-uploads/{uploadId}/complete. - [Commit a presigned upload](https://www.presolve.com/docs/api-reference/documents/commit-a-presigned-upload.md): Must be called with the same X-Idempotency-Key that created the upload session. - [List share links](https://www.presolve.com/docs/api-reference/documents/list-share-links.md): Requires the `documents:read` scope. Rate tier: `read`. - [Create a share link](https://www.presolve.com/docs/api-reference/documents/create-a-share-link.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Revoke a share link](https://www.presolve.com/docs/api-reference/documents/revoke-a-share-link.md): Requires the `documents:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List notes on a case](https://www.presolve.com/docs/api-reference/notes/list-notes-on-a-case.md): Requires the `notes:read` scope. Rate tier: `read`. - [Create a note](https://www.presolve.com/docs/api-reference/notes/create-a-note.md): Author attribution goes to the key’s acting attorney. - [Get note detail](https://www.presolve.com/docs/api-reference/notes/get-note-detail.md): Requires the `notes:read` scope. Rate tier: `read`. - [Soft-delete a note](https://www.presolve.com/docs/api-reference/notes/soft-delete-a-note.md): Requires the `notes:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update a note](https://www.presolve.com/docs/api-reference/notes/update-a-note.md): Requires the `notes:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List tasks org-wide](https://www.presolve.com/docs/api-reference/tasks/list-tasks-org-wide.md): Requires the `tasks:read` scope. Rate tier: `read`. - [Create a task](https://www.presolve.com/docs/api-reference/tasks/create-a-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List tasks on a case](https://www.presolve.com/docs/api-reference/tasks/list-tasks-on-a-case.md): Requires the `tasks:read` scope. Rate tier: `read`. - [Get task detail](https://www.presolve.com/docs/api-reference/tasks/get-task-detail.md): Requires the `tasks:read` scope. Rate tier: `read`. - [Cancel a task](https://www.presolve.com/docs/api-reference/tasks/cancel-a-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update task fields](https://www.presolve.com/docs/api-reference/tasks/update-task-fields.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Complete a task](https://www.presolve.com/docs/api-reference/tasks/complete-a-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Reopen a completed task](https://www.presolve.com/docs/api-reference/tasks/reopen-a-completed-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Snooze a task to a new due date](https://www.presolve.com/docs/api-reference/tasks/snooze-a-task-to-a-new-due-date.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Assign a user to a task](https://www.presolve.com/docs/api-reference/tasks/assign-a-user-to-a-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Unassign a user from a task](https://www.presolve.com/docs/api-reference/tasks/unassign-a-user-from-a-task.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Add a task follower](https://www.presolve.com/docs/api-reference/tasks/add-a-task-follower.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Remove a task follower](https://www.presolve.com/docs/api-reference/tasks/remove-a-task-follower.md): Requires the `tasks:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List calendar items](https://www.presolve.com/docs/api-reference/calendar/list-calendar-items.md): Non-task calendar items (appointments, events, hearings). - [Create a calendar item](https://www.presolve.com/docs/api-reference/calendar/create-a-calendar-item.md): Requires the `calendar:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List calendar items on a case](https://www.presolve.com/docs/api-reference/calendar/list-calendar-items-on-a-case.md): Requires the `calendar:read` scope. Rate tier: `read`. - [Get calendar item detail](https://www.presolve.com/docs/api-reference/calendar/get-calendar-item-detail.md): Requires the `calendar:read` scope. Rate tier: `read`. - [Cancel a calendar item](https://www.presolve.com/docs/api-reference/calendar/cancel-a-calendar-item.md): Requires the `calendar:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update a calendar item](https://www.presolve.com/docs/api-reference/calendar/update-a-calendar-item.md): Requires the `calendar:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List deadline obligations for a case](https://www.presolve.com/docs/api-reference/deadlines/list-deadline-obligations-for-a-case.md): Requires the `deadlines:read` scope. Rate tier: `read`. - [Create a manual deadline](https://www.presolve.com/docs/api-reference/deadlines/create-a-manual-deadline.md): Requires the `deadlines:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get deadline detail](https://www.presolve.com/docs/api-reference/deadlines/get-deadline-detail.md): Requires the `deadlines:read` scope. Rate tier: `read`. - [Remove a manual deadline](https://www.presolve.com/docs/api-reference/deadlines/remove-a-manual-deadline.md): Requires the `deadlines:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update a deadline](https://www.presolve.com/docs/api-reference/deadlines/update-a-deadline.md): Rule-computed deadlines reject date edits with 409. - [List the org’s deadline rule packs](https://www.presolve.com/docs/api-reference/deadlines/list-the-org’s-deadline-rule-packs.md): Requires the `deadlines:read` scope. Rate tier: `read`. - [List anchor records for a case](https://www.presolve.com/docs/api-reference/deadlines/list-anchor-records-for-a-case.md): Requires the `deadlines:read` scope. Rate tier: `read`. - [Set / update an anchor date](https://www.presolve.com/docs/api-reference/deadlines/set-update-an-anchor-date.md): Recomputes downstream rule-driven deadlines. - [List intake answers for a case](https://www.presolve.com/docs/api-reference/intake/list-intake-answers-for-a-case.md): pii:read gates sensitive accessors (ssn, dateOfBirth, address fields). - [Bulk-append intake answers](https://www.presolve.com/docs/api-reference/intake/bulk-append-intake-answers.md): Additive with no dedupe (documented partner semantics). Use the per-accessor PUT for safe upserts. - [Get one intake answer](https://www.presolve.com/docs/api-reference/intake/get-one-intake-answer.md): pii:read gates sensitive accessors, exactly as on the list endpoint. - [Upsert one intake answer](https://www.presolve.com/docs/api-reference/intake/upsert-one-intake-answer.md): Requires the `intake:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Soft-delete an intake answer](https://www.presolve.com/docs/api-reference/intake/soft-delete-an-intake-answer.md): Requires the `intake:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List the org’s intake question sets](https://www.presolve.com/docs/api-reference/intake/list-the-org’s-intake-question-sets.md): Requires the `intake:read` scope. Rate tier: `read`. - [Get a full question set](https://www.presolve.com/docs/api-reference/intake/get-a-full-question-set.md): Sections, questions, accessors, types, and conditions — the schema-discovery endpoint to call before writing answers. - [List the org’s case types](https://www.presolve.com/docs/api-reference/intake/list-the-org’s-case-types.md): Requires the `intake:read` scope. Rate tier: `read`. - [Get the resolved field schema for a case type](https://www.presolve.com/docs/api-reference/intake/get-the-resolved-field-schema-for-a-case-type.md): The effective integration field schema — fields with types, options, requiredness (including conditional requiredWhen rules), and the schemaVersion the fields PATCH endpoint requires. The response carries an ETag equal to the schemaVersion. - [Read case fields as a schema-shaped snapshot](https://www.presolve.com/docs/api-reference/intake/read-case-fields-as-a-schema-shaped-snapshot.md): The resolved schema and the case’s current typed values in one response, plus the concurrency tokens (schema.version and version) the PATCH endpoint requires. pii:read gates sensitive fields, including address-typed custom fields. - [Write case fields, validated against the schema](https://www.presolve.com/docs/api-reference/intake/write-case-fields-validated-against-the-schema.md): Typed, schema-validated writes: values are checked against each field’s type and options, required fields (including conditional requiredWhen rules) are enforced, and null clears a field. Both schemaVersion and version must match the current snapshot — a stale token returns 409 directing you to re-r… - [List e-sign documents on a case](https://www.presolve.com/docs/api-reference/e-sign/list-e-sign-documents-on-a-case.md): Requires the `esign:read` scope. Rate tier: `read`. - [Create and send an e-sign document from a template](https://www.presolve.com/docs/api-reference/e-sign/create-and-send-an-e-sign-document-from-a-template.md): Duplicate in-flight documents for the same case + template return 409 DUPLICATE_ENTRY with the existing esignDocumentId. Sender attribution requires the key’s acting attorney. - [Get e-sign document detail](https://www.presolve.com/docs/api-reference/e-sign/get-e-sign-document-detail.md): Envelope-level status only (per-recipient status is not tracked today). - [Send a manual signing reminder](https://www.presolve.com/docs/api-reference/e-sign/send-a-manual-signing-reminder.md): Enforces the org kill-switch, reminder cap, and status eligibility; skips surface a structured skippedReason. - [Void an e-sign envelope](https://www.presolve.com/docs/api-reference/e-sign/void-an-e-sign-envelope.md): Idempotent on already-voided; 409 on completed; 502 without local state change when the provider void fails. - [Download the executed document](https://www.presolve.com/docs/api-reference/e-sign/download-the-executed-document.md): Requires the `esign:read` scope. Rate tier: `read`. - [List the org’s e-sign templates](https://www.presolve.com/docs/api-reference/e-sign/list-the-org’s-e-sign-templates.md): Requires the `esign:read` scope. Rate tier: `read`. - [List liens on a case](https://www.presolve.com/docs/api-reference/billing/list-liens-on-a-case.md): accruedInterestCents / netPayableCents are recomputed on every read (with computedAt). - [Create a lien](https://www.presolve.com/docs/api-reference/billing/create-a-lien.md): Requires the `billing:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get lien detail](https://www.presolve.com/docs/api-reference/billing/get-lien-detail.md): Requires the `billing:read` scope. Rate tier: `read`. - [Soft-delete a lien](https://www.presolve.com/docs/api-reference/billing/soft-delete-a-lien.md): Rejected while check allocations reference the lien. - [Update a lien](https://www.presolve.com/docs/api-reference/billing/update-a-lien.md): status and paidAt are NOT patchable — they are set by the settlement funds pipeline only. - [List expenses on a case](https://www.presolve.com/docs/api-reference/billing/list-expenses-on-a-case.md): Requires the `billing:read` scope. Rate tier: `read`. - [Create an expense](https://www.presolve.com/docs/api-reference/billing/create-an-expense.md): Requires the `billing:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get expense detail](https://www.presolve.com/docs/api-reference/billing/get-expense-detail.md): Requires the `billing:read` scope. Rate tier: `read`. - [Soft-delete an expense](https://www.presolve.com/docs/api-reference/billing/soft-delete-an-expense.md): Rejected while allocations reference the expense. - [Update an expense](https://www.presolve.com/docs/api-reference/billing/update-an-expense.md): Rejected once the expense has been paid by the settlement pipeline. - [List time entries](https://www.presolve.com/docs/api-reference/billing/list-time-entries.md): Requires the `billing:read` scope. Rate tier: `read`. - [Create a time entry](https://www.presolve.com/docs/api-reference/billing/create-a-time-entry.md): totalAmountCents is computed server-side (rate × hours); rates are per-entry. - [Get time entry detail](https://www.presolve.com/docs/api-reference/billing/get-time-entry-detail.md): Requires the `billing:read` scope. Rate tier: `read`. - [Delete a time entry](https://www.presolve.com/docs/api-reference/billing/delete-a-time-entry.md): Hard delete; rejected when billed. - [Update a time entry](https://www.presolve.com/docs/api-reference/billing/update-a-time-entry.md): Rejected when the entry has been billed to an invoice. - [List invoices](https://www.presolve.com/docs/api-reference/billing/list-invoices.md): Requires the `billing:read` scope. Rate tier: `read`. - [Get invoice detail](https://www.presolve.com/docs/api-reference/billing/get-invoice-detail.md): Requires the `billing:read` scope. Rate tier: `read`. - [Edit a draft invoice](https://www.presolve.com/docs/api-reference/billing/edit-a-draft-invoice.md): 409 when the invoice has left draft. - [Create an invoice](https://www.presolve.com/docs/api-reference/billing/create-an-invoice.md): Bidirectional: outbound (firm bills client) or inbound (vendor bills firm). Outbound supports fromUnbilled: true to pull unbilled time entries and uninvoiced reimbursable expenses atomically. - [Transition invoice status](https://www.presolve.com/docs/api-reference/billing/transition-invoice-status.md): Validated over the real status set (draft → sent → paid | partial | overdue, plus to_be_paid). - [Download the uploaded invoice file](https://www.presolve.com/docs/api-reference/billing/download-the-uploaded-invoice-file.md): Requires the `billing:read` scope. Rate tier: `read`. - [List resolutions for a case](https://www.presolve.com/docs/api-reference/settlement-funds/list-resolutions-for-a-case.md): Requires the `funds:read` scope. Rate tier: `read`. - [Get resolution detail with ledger summary](https://www.presolve.com/docs/api-reference/settlement-funds/get-resolution-detail-with-ledger-summary.md): Requires the `funds:read` scope. Rate tier: `read`. - [Preview the settlement allocation waterfall](https://www.presolve.com/docs/api-reference/settlement-funds/preview-the-settlement-allocation-waterfall.md): Pure computation, no writes: fee → litigation costs → liens → client recovery with referral-fee sub-split. - [List checks on a case](https://www.presolve.com/docs/api-reference/settlement-funds/list-checks-on-a-case.md): Requires the `funds:read` scope. Rate tier: `read`. - [Record an inbound check](https://www.presolve.com/docs/api-reference/settlement-funds/record-an-inbound-check.md): Requires the `funds:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get check detail with allocations](https://www.presolve.com/docs/api-reference/settlement-funds/get-check-detail-with-allocations.md): Requires the `funds:read` scope. Rate tier: `read`. - [Update check metadata](https://www.presolve.com/docs/api-reference/settlement-funds/update-check-metadata.md): Inherits the resolution edit-lock: 409 INVALID_STATE_TRANSITION when the resolution is finalized/closed/voided. - [Transition check status](https://www.presolve.com/docs/api-reference/settlement-funds/transition-check-status.md): Requires the `funds:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List a check’s allocation lines](https://www.presolve.com/docs/api-reference/settlement-funds/list-a-check’s-allocation-lines.md): Requires the `funds:read` scope. Rate tier: `read`. - [Get available funds for a case](https://www.presolve.com/docs/api-reference/settlement-funds/get-available-funds-for-a-case.md): Requires the `funds:read` scope. Rate tier: `read`. - [List disbursements on a case](https://www.presolve.com/docs/api-reference/settlement-funds/list-disbursements-on-a-case.md): Requires the `funds:read` scope. Rate tier: `read`. - [List disbursements org-wide](https://www.presolve.com/docs/api-reference/settlement-funds/list-disbursements-org-wide.md): Requires the `funds:read` scope. Rate tier: `read`. - [Get disbursement detail](https://www.presolve.com/docs/api-reference/settlement-funds/get-disbursement-detail.md): Requires the `funds:read` scope. Rate tier: `read`. - [Transition disbursement status](https://www.presolve.com/docs/api-reference/settlement-funds/transition-disbursement-status.md): Enforces the real state machine: allocated → pending → processed → completed, → cancelled, cancelled → allocated. Illegal moves return 409; amounts are immutable once completed. - [List referrals](https://www.presolve.com/docs/api-reference/referrals/list-referrals.md): Requires the `referrals:read` scope. Rate tier: `read`. - [Get referral detail](https://www.presolve.com/docs/api-reference/referrals/get-referral-detail.md): Requires the `referrals:read` scope. Rate tier: `read`. - [Create an outbound referral](https://www.presolve.com/docs/api-reference/referrals/create-an-outbound-referral.md): Requires the `referrals:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Accept a referral](https://www.presolve.com/docs/api-reference/referrals/accept-a-referral.md): Grants durable case access to the receiving attorney — it never transfers case ownership. The key’s acting attorney is the accepting principal; safely idempotent on replay. - [Decline a referral](https://www.presolve.com/docs/api-reference/referrals/decline-a-referral.md): Requires the `referrals:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [List referral activities](https://www.presolve.com/docs/api-reference/referrals/list-referral-activities.md): Requires the `referrals:read` scope. Rate tier: `read`. - [List logged emails on a case](https://www.presolve.com/docs/api-reference/communications/list-logged-emails-on-a-case.md): Requires the `communications:read` scope. Rate tier: `read`. - [Append an email record to a case](https://www.presolve.com/docs/api-reference/communications/append-an-email-record-to-a-case.md): Write-append correspondence logging — this does NOT send mail. - [Get a logged email](https://www.presolve.com/docs/api-reference/communications/get-a-logged-email.md): Requires the `communications:read` scope. Rate tier: `read`. - [List call logs on a case](https://www.presolve.com/docs/api-reference/communications/list-call-logs-on-a-case.md): Requires the `communications:read` scope. Rate tier: `read`. - [Append a call record to a case](https://www.presolve.com/docs/api-reference/communications/append-a-call-record-to-a-case.md): Requires the `communications:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Get a call log entry](https://www.presolve.com/docs/api-reference/communications/get-a-call-log-entry.md): Requires the `communications:read` scope. Rate tier: `read`. - [List medical facilities bound to a case](https://www.presolve.com/docs/api-reference/medical/list-medical-facilities-bound-to-a-case.md): PHI surface: admin-granted medical:read only; every read is HIPAA-audited; responses are never cacheable. - [Bind a contact as a medical facility](https://www.presolve.com/docs/api-reference/medical/bind-a-contact-as-a-medical-facility.md): Requires the `medical:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `sensitive`. - [Soft-delete a facility binding](https://www.presolve.com/docs/api-reference/medical/soft-delete-a-facility-binding.md): Requires the `medical:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Requires `If-Match: ""`; a stale revision returns 409 `STALE_REVISION` and successful responses… - [Update facility routing config](https://www.presolve.com/docs/api-reference/medical/update-facility-routing-config.md): Identity fields are read-only here — writable only via the contact resource. - [List treatment summaries for a case](https://www.presolve.com/docs/api-reference/medical/list-treatment-summaries-for-a-case.md): Requires the `medical:read` scope. Rate tier: `sensitive`. - [Create a treatment summary](https://www.presolve.com/docs/api-reference/medical/create-a-treatment-summary.md): Requires the `medical:write` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `sensitive`. - [Update a treatment summary](https://www.presolve.com/docs/api-reference/medical/update-a-treatment-summary.md): Optimistic concurrency via expectedVersion — stale versions return a structured conflict. API writes stamp the integration provenance triple with the service-account identity. - [List records-retrieval requests for a case](https://www.presolve.com/docs/api-reference/medical/list-records-retrieval-requests-for-a-case.md): Requires the `medical:read` scope. Rate tier: `sensitive`. - [Create a retrieval request](https://www.presolve.com/docs/api-reference/medical/create-a-retrieval-request.md): Status defaults server-side to new_request; sentVia/sentDate cannot be set at create via the API. - [Get retrieval request detail](https://www.presolve.com/docs/api-reference/medical/get-retrieval-request-detail.md): Requires the `medical:read` scope. Rate tier: `sensitive`. - [Cancel a retrieval request](https://www.presolve.com/docs/api-reference/medical/cancel-a-retrieval-request.md): Validates non-terminal status, records the reason in history, and is idempotent. - [Download received records / bills](https://www.presolve.com/docs/api-reference/medical/download-received-records-bills.md): Presigned URL expires in 60 seconds (PHI posture). - [List API-visible saved reports](https://www.presolve.com/docs/api-reference/reports-&-exports/list-api-visible-saved-reports.md): Only definitions the org has flagged apiVisible are returned. - [Get report definition metadata](https://www.presolve.com/docs/api-reference/reports-&-exports/get-report-definition-metadata.md): Requires the `reports:read` scope. Rate tier: `read`. - [Execute a saved report](https://www.presolve.com/docs/api-reference/reports-&-exports/execute-a-saved-report.md): Saved definitions only. HQ keys default to the current organization and authorized descendants when reportIncludeChildOrganizations is enabled (default true for existing and new keys). Cross-organization runs require an acting attorney with current HQ, reporting, export, and data permissions. organi… - [List export jobs](https://www.presolve.com/docs/api-reference/reports-&-exports/list-export-jobs.md): Requires the `reports:read` scope. Rate tier: `read`. - [Enqueue a bulk data export](https://www.presolve.com/docs/api-reference/reports-&-exports/enqueue-a-bulk-data-export.md): Async job + presigned pickup. entity: leads | cases; format: csv. Completion surfaces as export_job.completed / export_job.failed on the event feed. - [Get export job status](https://www.presolve.com/docs/api-reference/reports-&-exports/get-export-job-status.md): Requires the `reports:read` scope. Rate tier: `read`. - [Download a completed export](https://www.presolve.com/docs/api-reference/reports-&-exports/download-a-completed-export.md): Requires the `reports:read` scope. Rate tier: `read`. - [Read the unified event feed](https://www.presolve.com/docs/api-reference/events-&-webhooks/read-the-unified-event-feed.md): Cursor-ordered public event feed. Requires events:read; results are additionally scope-filtered — a key only sees events for entities whose requiredScope it also holds (e.g. case.* events require cases:read). - [Read the documents-only event feed (legacy alias)](https://www.presolve.com/docs/api-reference/events-&-webhooks/read-the-documents-only-event-feed-legacy-alias.md): Deprecated by GET /events; kept as the documents-only alias for shipped integrations. - [Enumerate subscribable event types](https://www.presolve.com/docs/api-reference/events-&-webhooks/enumerate-subscribable-event-types.md): Requires the `events:read` scope. Rate tier: `read`. - [List webhook subscriptions](https://www.presolve.com/docs/api-reference/events-&-webhooks/list-webhook-subscriptions.md): Scoped to this API key — sibling keys cannot see each other’s subscriptions. - [Create a webhook subscription](https://www.presolve.com/docs/api-reference/events-&-webhooks/create-a-webhook-subscription.md): URL must be HTTPS on a host in the key’s webhookAllowedHosts allowlist (fail-closed when empty). The signing secret is returned once, inside the subscription object on create (and again only on rotateSecret). - [Delete a webhook subscription](https://www.presolve.com/docs/api-reference/events-&-webhooks/delete-a-webhook-subscription.md): Requires the `webhooks:manage` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. - [Update a webhook subscription](https://www.presolve.com/docs/api-reference/events-&-webhooks/update-a-webhook-subscription.md): Requires the `webhooks:manage` scope. Mutations require an `X-Idempotency-Key` header (responses are stored for replay; reusing a key with a different request returns 409 `IDEMPOTENCY_CONFLICT`). Rate tier: `write`. ## OpenAPI Specs - [openapi](/docs/openapi.json)