OpenapiCrm
Returns the org's Startup Program applications, newest first.
Returns the org's Startup Program applications, newest first.
GET /v1/crm/applications
| Address | https://api.hanzo.ai/v1/crm/applications |
| Method | GET |
| Operation | get_crm_applications |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns the org's Startup Program applications, newest first. Each carries its AI screen and its stage history; a stage narrows the page to one pipeline stage.
Request
2 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
stage | query | string | — | Stage returns only the applications at that pipeline stage when set: applied, screened, qualified, credits-offered, onboarded or rejected. |
limit | query | integer | — | Limit caps the rows returned: 200 by default, 1000 at most. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | applicationList | ok |
200 body — 32 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
data | body | ProgramApplication[] | — | Data is the page of applications, newest first. |
data[].company | body | string | — | Company is the applicant's company name. |
data[].companyId | body | string | — | CompanyID is the CRM Company minted for this lead at intake, so the startup also appears in the org's standard CRM tabs. |
data[].contactId | body | string | — | ContactID is the CRM Contact minted for this lead at intake. |
data[].contactName | body | string | — | ContactName is the person who applied. |
data[].createdAt | body | integer | — | CreatedAt is the unix second the application arrived. |
data[].email | body | string | — | Email is the applicant's email — half of the (email, company) key a resubmission refreshes instead of duplicating. |
data[].events | body | StageEvent[] | — | Events is the append-only stage-transition log, oldest first. |
data[].events[].at | body | integer | — | At is the unix second of the move. |
data[].events[].by | body | string | — | By is who moved it: "system" for intake and the AI auto-advance, else the validated staff user id. |
data[].events[].from | body | string | — | From is the stage moved out of; empty on the intake event that opens the log. |
data[].events[].note | body | string | — | Note is the free-text comment recorded with the move. |
data[].events[].to | body | string | — | To is the stage moved into. |
data[].id | body | string | — | ID is the server-minted application id ("appl_" + 128 random bits). |
data[].metadata | body | object | — | Metadata is the FULL submitted form, every field, including the arrays the promoted columns above do not carry (tier1Investors, useCases) and the deterministic… |
data[].metadata.* | body | object | — | |
data[].reason | body | string | — | Reason is why the application was rejected, required to reject. |
data[].role | body | string | — | Role is the applicant's role at their company. |
data[].screen | body | ScreenResult | — | |
data[].screen.draftReply | body | string | — | DraftReply is a suggested email reply for staff to edit and send. |
data[].screen.error | body | string | — | Error says why a failed screen failed — no AI gateway configured, a gateway error, or a reply that carried no parseable JSON. |
data[].screen.model | body | string | — | Model is the LLM the screen ran on. |
data[].screen.score | body | integer | — | Score is the model's 0..100 fit score, clamped to that range. |
data[].screen.screenedAt | body | integer | — | ScreenedAt is the unix second the screen finished (0 while pending). |
data[].screen.status | body | string | — | Status is the screen's state: pending | done | failed. |
data[].screen.suggestedCredits | body | integer | — | SuggestedCredits is the recommended credit grant in USD, snapped to the nearest allowed rung: 0 | 5000 | 25000 | 50000 | 150000. |
data[].screen.summary | body | string | — | Summary is the model's short assessment of the application. |
data[].screen.tier1Backed | body | string | — | Tier1Backed is the model's read on tier-1 backing, normalized to "yes", "no" or "unclear" (anything it cannot resolve reads "unclear"). |
data[].stage | body | string | — | Stage is the pipeline stage: applied, screened, qualified, credits-offered, onboarded or rejected. |
data[].tier1 | body | boolean | — | Tier1 is whether the applicant is tier-1 backed, derived deterministically at intake from the submitted fund list — independent of the AI screen. |
data[].updatedAt | body | integer | — | UpdatedAt is the unix second of the last write. |
data[].website | body | string | — | Website is the applicant's website as submitted. |
Failure carries the platform error shape — see Errors.
Examples
hanzo crm applications listimport { Configuration, CrmApi } from 'hanzoai';
const api = new CrmApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getCrmApplications();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import CrmApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = CrmApi(client).get_crm_applications()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.CrmAPI.GetCrmApplications(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, crm_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = crm_api::get_crm_applications(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.CrmApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new CrmApi(client).getCrmApplications();curl https://api.hanzo.ai/v1/crm/applications \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches crm through the crm tool, which names its 20 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_crm_applications"
}
}
}'How is this guide?