REST API reference
Businesses
Add businesses through a Lead source, complete their intake applications, and follow their progress.
Bring a business into your Portal
A business is the company seeking funding. Client intake optionally collects information and documents; funding work can start before intake exists.
- List API Lead sources and choose the one that should receive the business. If needed, create a Lead source by name.
- Check its
readiness. If setup is missing, ask a Portal administrator to resolve the reported setup issues. - Fetch the returned
business_contract_url. Itsrequest_schemadefines the business and initial application information this Lead source accepts. - Create the business through that Lead source. Store the returned business and client intake application IDs.
- Open the client intake application guide to complete or submit the intake.
Use the returned schema rather than assuming fields such as owners or legal_name exist. Contacts linked to a business and owners entered in an application serve different purposes.
To clean up an unused API Lead source, send DELETE /v1/source-channels/{source_channel_id}/ with an Idempotency-Key header and no request body. This requires Businesses write access. A source with attributed businesses or Deals returns 409; keep it for those existing records. This operation does not move attribution. Removal revokes any legacy credential owned by the source; the Portal API key remains active. Retry with the same key to replay the successful removal response.
Manage contacts
Business contacts are a complete replacement set. Use people available in the same Portal. A primary_person_id must also appear in person_ids; null clears the primary designation. An empty set clears the contacts. Read the current set and its ETag before replacing it, then read back the result.
Collect information after creating a business
For an existing source-owned business with no intake, call
POST /v1/businesses/{business_id}/client-intake/ with no request body and a caller-generated
Idempotency-Key. Requires businesses: write. The effective published source
intake template is used even when automatic intake is off. The response contains
business_id, application_id, created, and frontend_link: 201 for creation,
200 when returning existing intake. An exact retry replays the original response.
This preserves business metadata and projects and sends no invitation.
In MCP, use businesses.create_client_intake with provider_slug, business_id,
and a UUID idempotency_key. Review the resulting intake, then share it separately.
The API share endpoint requires client_intake_applications: write; internal AI
sharing uses the existing approval flow. An intake share grants application access,
not workspace membership. Existing project matching answers are not automatically
synchronized when intake is submitted; use the intake evidence in that project's autofill workflow.
Available operations
/businesses/GETList Lead sources available for API business submissions/source-channels/POSTCreate a business through an API source channel/source-channels/{source_channel_id}/businesses/POSTCreate a Lead source for API business submissions/source-channels/POSTCreate client intake/businesses/{business_id}/client-intake/POSTUpload a file requested by a successful business submission/source-channels/{source_channel_id}/business-files/{upload_token}/GETGet a business and its portal status/businesses/{business_id}/GETGet the current dynamic business submission contract/source-channels/{source_channel_id}/business-contract/GETList Business contacts/businesses/{business_id}/people/GETRead source-scoped client progress/businesses/{business_id}/activation/PUTReplace Business contacts/businesses/{business_id}/people/PATCHUpdate a Business/businesses/{business_id}/PATCHMove one Business to a workflow stage/businesses/{business_id}/stage/DELETERemove an unused API Lead source/source-channels/{source_channel_id}/Intake applications
View overview →/client-intake-applications/{application_id}/GETRetrieve a client intake application contract/client-intake-applications/{application_id}/contract/GETList client intake application answers/client-intake-applications/{application_id}/answers/PATCHUpdate client intake application answers/client-intake-applications/{application_id}/answers/GETList repeatable answer items/client-intake-applications/{application_id}/answers/repeatable-items/POSTCreate a repeatable answer item/client-intake-applications/{application_id}/answers/repeatable-items/PATCHUpdate a repeatable answer item/client-intake-applications/{application_id}/answers/repeatable-items/DELETEDelete a repeatable answer item/client-intake-applications/{application_id}/answers/repeatable-items/GETList answer files/client-intake-applications/{application_id}/answers/files/POSTRequest an answer-file upload/client-intake-applications/{application_id}/answers/files/POSTUpload an answer file/client-intake-applications/{application_id}/answers/files/{upload_id}/DELETEDelete an answer file/client-intake-applications/{application_id}/answers/files/GETRead prepared client intake autofill evidence/client-intake-applications/{application_id}/autofill-preparation/POSTStart client intake autofill/client-intake-applications/{application_id}/autofill-runs/PATCHUpdate client intake autofill preparation/client-intake-applications/{application_id}/autofill-preparation/POSTUpload one client intake autofill evidence file/client-intake-applications/{application_id}/autofill-preparation/files/GETPoll client intake autofill/client-intake-application-autofill-runs/{run_id}/GETList client intake autofill suggestions/client-intake-application-autofill-runs/{run_id}/suggestions/POSTAccept autofill suggestion/client-intake-application-autofill-runs/{run_id}/suggestions/{suggestion_id}/accept/POSTRetry unresolved client intake autofill work/client-intake-application-autofill-runs/{run_id}/retry/POSTShare a client intake application with recipients by email/client-intake-applications/{application_id}/share/GETCheck client intake application submission readiness/client-intake-applications/{application_id}/submission-readiness/POSTSubmit a client intake application/client-intake-applications/{application_id}/submit/