Company Report
There are three endpoints for retrieving analysis and report data. Each returns a different shape optimized for specific use cases.
Which Endpoint Should I Use?
| Use Case | Endpoint | Input |
|---|---|---|
| Consuming analysis data programmatically (KPIs, founders, data points) | /analysis/detail | analysisId |
| Report/PDF-style generation (formatted text, deal score) | /retrievereport | analysisId + projectId |
| Full project context for app/UI (voting, events, fit scoring) | /project/fullreport | projectId (+ optional analysisId) |
Quick rule:
- Need the normalized analysis data model → use
/analysis/detail - Need export/report strings → use
/retrievereport - Need end-to-end project context → use
/project/fullreport
Headers (all endpoints)
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Your API key (format: YOUR_API_KEY) |
How to Get projectId and analysisId
Use Search Companies to find the project, then Retrieve Companies to get analyses and pick the latest analysisId.
JavaScript
const API_KEY = "YOUR_API_KEY_HERE";
const BASE_URL = "https://api.kruncher.ai/api";
async function getIds(companyName) {
const search = await fetch(
`${BASE_URL}/integration/project/search?keywords=${encodeURIComponent(companyName)}`,
{ headers: { Authorization: API_KEY } }
).then((r) => r.json());
if (!search.data?.data?.length) {
throw new Error(`Company not found: ${companyName}`);
}
const projectId = search.data.data[0].id;
const projects = await fetch(
`${BASE_URL}/integration/projects`,
{ headers: { Authorization: API_KEY, "Content-Type": "application/json" } }
).then((r) => r.json());
const project = projects.data.find((p) => p.id === projectId);
if (!project?.analyses?.length) {
throw new Error("No analyses found for this project");
}
const latest = project.analyses.sort(
(a, b) => new Date(b.createdAt) - new Date(a.createdAt)
)[0];
return { projectId, analysisId: latest.id };
}Analysis Detail
GET https://api.kruncher.ai/api/integration/analysis/detail
Returns the richest structured analysis data. Contains flattened KPI values, founders, data points, and company fit dimensions — all keyed for programmatic access.
Best for: consuming analysis data in code, building custom views, extracting specific KPIs.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
analysisId | string (UUID) | Yes | The analysis to retrieve |
Code Examples
JavaScript
const analysisId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
const response = await fetch(
`https://api.kruncher.ai/api/integration/analysis/detail?analysisId=${analysisId}`,
{ headers: { "Authorization": API_KEY } }
);
const result = await response.json();
const { analysisObject, analysisData, founders, dataPointsObject } = result.data;
console.log("Fit:", analysisObject.projectfit_saas_scoreLabel);
console.log("Founders:", founders.map(f => f.fullName).join(", "));
console.log("Valuation:", dataPointsObject.valuationCurrency);Response Shape
{
"metadata": { "code": "1000", "title": "Successful", "description": "" },
"data": {
"analysisObject": {
"projectLink": "https://kruncher.ai/app/project/?projectId=...",
"projectfit_<code>_scoreLabel": "Strong Fit",
"projectfit_<code>_explanation": "...",
"projectfit_<code>_score": 8.5,
"projectfit_<code>_scoreColor": "Green"
},
"analysisData": {
"<entityKey>": {
"text": "value",
"structuredData": null,
"type": "string",
"source": "document",
"sources": [],
"comments": []
}
},
"kruncherEntityCompanyId": "uuid",
"kruncherEntityCompanyDomainsCsv": "example.com",
"founders": [
{
"fullName": "John Doe",
"emailsCsv": "john@company.com",
"tagsString": "CEO, Founder"
}
],
"projectId": "uuid",
"projectcompanyfit": {
"projectcompanyfitdimensions": [
{ "code": "saas", "scoreLabel": "Strong Fit", "explanation": "...", "score": 8.5 }
]
},
"dataPoints": [
{ "metricKey": "valuationCurrency", "dataType": "currency", "floatValue": 5000000 }
],
"dataPointsObject": {
"valuationCurrency": 5000000,
"foundYearInteger": 2020,
"numberOfEmployeesInteger": 50
},
"analysisStructure": {
"<entityKey>": { "value": {}, "text": "...", "structuredData": null }
},
"project": {}
}
}Response Fields
| Field | Description |
|---|---|
analysisObject | Flattened KPI values + project data. Fit scores follow the pattern projectfit_<code>_score/scoreLabel/explanation/scoreColor. |
analysisData | Chapter/row remap — each entity key maps to its text value, structured data, type, source, and comments. |
founders | Array of founder records with names, emails, and role tags. |
dataPoints | Array of typed metric data points (integer, float, currency, date, boolean). |
dataPointsObject | Flattened key-value map of data points for easy access (e.g., valuationCurrency, foundYearInteger). |
projectcompanyfit | Company fit dimensions with per-dimension scores and explanations. |
analysisStructure | Raw analysis object keyed by entity key. |
project | Full project object. |
Retrieve Report
GET https://api.kruncher.ai/api/integration/retrievereport
Returns the report generation payload with pre-formatted strings suitable for export, PDF generation, or LLM context. This is the recommended endpoint for API integrations, MCP tools, and LLM connectors.
Best for: report/PDF-style generation, formatted text output, deal scoring context.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
analysisId | string (UUID) | Yes | The analysis to retrieve the report for |
projectId | string (UUID) | Yes | The project that owns the analysis |
Code Examples
JavaScript
const projectId = "521a93a6-091d-4943-ba13-7c1a654a14ae";
const analysisId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
const url = new URL("https://api.kruncher.ai/api/integration/retrievereport");
url.searchParams.set("projectId", projectId);
url.searchParams.set("analysisId", analysisId);
const result = await fetch(url, {
headers: { Authorization: API_KEY, "Content-Type": "application/json" }
}).then((r) => r.json());
console.log("Report:", result.data);Response Shape
Contains the analysis detail plus report generation fields including formatted chapter strings, project detail strings, and deal scoring data.
Full Report
GET https://api.kruncher.ai/api/integration/project/fullreport
Returns a complete project context bundle combining project details, analysis, voting, company fit, and events in a single call. Provides everything needed to render a full project view.
Best for: dashboards, comprehensive project views, app/UI rendering with voting and events context.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string (UUID) | Yes | The project to retrieve |
analysisId | string (UUID) | No | Specific analysis. If omitted, uses latest completed analysis. If it is a completed analysis of the project, projectDetail.projectscores holds the scores of this analysis only. |
sections | string | No | Comma-separated list of the parts to return. If omitted, all parts are returned. See Sections. |
Sections
| Key | Returns |
|---|---|
dealscore, projectcompanyfit | projectcompanyfit |
relevantCompanyEvents | eventsConfigsRelevantCompanyEvent |
votes or votesAndNotes | projectvotesummary |
investments | investments and totalInvestment |
reportingCycle | reportingCycle |
Any other key is a chapter key. analysisDetail then holds only the chapters with these keys. If you pass no chapter key, analysisDetail is null. A part that you do not select is null. projectDetail is always returned.
Code Examples
JavaScript
const projectId = "521a93a6-091d-4943-ba13-7c1a654a14ae";
const response = await fetch(
`https://api.kruncher.ai/api/integration/project/fullreport?projectId=${projectId}`,
{ headers: { "Authorization": API_KEY } }
);
const result = await response.json();
const { projectDetail, projectvotesummary, analysisDetail, projectcompanyfit } = result.data;
console.log("Project:", projectDetail.name);
console.log("Votes:", projectvotesummary);
console.log("Company fit:", projectcompanyfit);Response Shape
{
"metadata": { "code": "1000", "title": "Successful", "description": "" },
"data": {
"projectDetail": {
"id": "uuid",
"name": "TechStartup",
"companyName": "TechStartup Inc.",
"companyWebsite": "https://techstartup.com",
"processing": "completed",
"analyses": [],
"projectscores": [],
"projectstatus": { "name": "Active", "code": "active" }
},
"projectvotesummary": {},
"analysisDetail": {},
"projectcompanyfit": {},
"eventsConfigsRelevantCompanyEvent": {},
"investments": [],
"totalInvestment": { "amount": 0, "currency": "USD" },
"reportingCycle": {}
}
}Response Fields
| Field | Description |
|---|---|
projectDetail | Full project object with analyses, scores, status, and owner. |
projectvotesummary | Voting summary with individual votes from team members. |
analysisDetail | Full analysis detail (null if no completed analysis exists). |
projectcompanyfit | Company fit scoring across configured dimensions. |
eventsConfigsRelevantCompanyEvent | Relevant company events and event configurations. |
investments | Investment records of the company. |
totalInvestment | Total investment of your workspace in the company: { amount, currency }. |
reportingCycle | How often the portfolio company is expected to report, and the dates that follow. Fields include cadence, source (fund, customer or none), sourceName (the fund whose cadence applies, when one does), currentCycle and nextCycle. Derived from the funds of the company or from the workspace settings. It is null if the derivation fails. |
Related Endpoints
- Search Companies - Find projects by keyword
- Retrieve Companies - Get project IDs and analysis IDs
- Update Analysis - Update entity values in an analysis
- Data Model - Entity key reference
- Metrics - Available metric keys