The PartnerOS AI API exposes the same generation pipelines that power the strategy wizard and partner intelligence features in the web application. You can generate and stream an Ideal Customer Profile (ICP), an Ideal Partner Profile (IPP), partner type recommendations grounded in your knowledge base, and executive summary reports for your entire partner ecosystem. A conversational chat endpoint lets you build assistants that answer questions in the context of your PartnerOS data. Most AI endpoints stream their responses as plain text in the AI SDK streaming protocol. A few endpoints return non-streaming JSON or use Server-Sent Events. Each endpoint is marked clearly below. All endpoints require authentication and are subject to your organization’s AI quota.Documentation Index
Fetch the complete documentation index at: https://docs.partneros.ai/llms.txt
Use this file to discover all available pages before exploring further.
Generate an ICP (streaming)
Generates an Ideal Customer Profile for a company domain. The response is a streaming plain-text payload. Parse the stream incrementally to display results as they arrive.POST /api/ai/icp
Body parameters
Company name or domain to generate an ICP for (e.g.
"acmecorp.com" or "Acme Corp"). Must be a non-empty string.Streaming response
The response body is a streamed plain-text payload. Consume it with the@ai-sdk/react useObject hook or by reading the response body as a stream and parsing each line.
The fully assembled payload is a JSON object matching the ICPResult schema:
Target customer industry vertical.
Sub-verticals within the industry.
Target company size range (e.g.
"100-500 employees").Target company revenue range.
Target geographic markets.
Business goals of the ideal customer.
Business implications of not solving the problem.
Signals that indicate a company is ready to buy.
Technologies commonly used by the ideal customer.
Key pain points the ideal customer experiences.
Array of buying personas within the target company. Each object has a
role (job title) and description (goals and concerns).Example
The ICP generation result is cached by domain for the duration of a session. Repeated calls with the same domain value return a cached stream, avoiding redundant LLM calls.
Generate an IPP (streaming)
Generates an Ideal Partner Profile based on a previously generated ICP. The IPP describes the characteristics of partner organizations best positioned to co-sell, co-market, or deliver services to your ideal customer. The response streams in the AI SDK text stream format.POST /api/ai/ipp
Body parameters
A complete
ICPResult object. Pass the assembled ICP output from POST /api/ai/icp directly.Your company’s domain. When omitted, the server derives the domain from your session email address.
Streaming response
The streamed payload assembles to anIPPResult JSON object:
Recommended partner type categories (e.g.
"System Integrators", "ISVs").Customer segments the ideal partner typically serves.
Industry verticals the ideal partner operates in.
Geographic markets where the ideal partner has reach.
Technical skills or platform expertise the partner should have.
What the ideal partner is trying to achieve through the partnership.
Example
Generate partner type recommendations (streaming)
Generates scored partner type recommendations grounded in your organization’s ICP, IPP, and knowledge base. The ICP and IPP must exist in your organization’s strategy cache (generated during onboarding or regenerated via the strategy section). Returns a text stream that assembles to aPartnerTypeResult JSON object.
POST /api/ai/strategy/partner-types
Body parameters
Knowledge base namespace to use for retrieval grounding. Use
"staging" for non-production testing.Streaming response
Array of scored partner type recommendations, ordered by score descending.
Example
This endpoint returns
422 Unprocessable Entity if no ICP or IPP is found for your organization. Complete the strategy onboarding in the PartnerOS web app first.Generate partner suggestions (streaming)
Generates partner company suggestions grounded in your knowledge base, tailored to a specific prospect’s company name, industry, and pain points. Useful for building “recommended partners” features or prospect-facing match tools.POST /api/ai/partner-suggestions
Body parameters
Name of the prospect company you are seeking partners for.
Industry of the prospect company.
Array of known pain points the prospect is experiencing.
Knowledge base namespace. Use
"staging" for non-production environments.Streaming response
The streamed plain-text payload assembles to a JSON array of partner suggestion objects. Each object describes a recommended partner type and rationale grounded in your knowledge base content.Example
Generate an executive summary (async)
Enqueues an AI-generated executive summary or review report for your partner ecosystem. The report is generated asynchronously by a background worker. This endpoint returns immediately with areportId and HTTP 202 so you can begin polling the SSE stream for progress.
POST /api/ai/strategy/executive-summary/generate
Body parameters
Your organization’s display name, used in the generated report.
Your organization’s domain, used for context grounding.
Type of report to generate. One of
"executive-summary", "annual-review", or "quarterly-review".Optional partner filter criteria to scope the report to a subset of your partner ecosystem.
Optional fingerprint string identifying the filter combination. Used for deduplication.
Response fields
UUID of the executive summary report row. Use this with the SSE stream endpoint to monitor progress.
Background job ID. May be
null if a generation job was already in flight.Initial status:
"running" when enqueued, or "running" with inFlight: true when an existing job was already active.true when an existing in-flight job was returned rather than a new one being enqueued. The reportId in this case is the active job’s report.Example
Stream executive summary progress (SSE)
Opens a Server-Sent Events stream that pushes real-time progress updates as the executive summary report is generated section by section. Connect to this endpoint immediately after receiving areportId from the generate endpoint.
GET /api/ai/strategy/executive-summary/stream
Query parameters
UUID of the executive summary report to stream, as returned by the generate endpoint.
SSE events
| Event | Payload | Description |
|---|---|---|
section.completed | { reportId, sectionId, payload, sectionGeneratedAt } | Emitted each time a new report section (or an updated partial) is available. |
job.completed | { reportId } | Emitted when all sections are generated and the report status is "completed". Stream closes after this event. |
job.failed | { reportId, errorMessage } | Emitted if generation fails or the 5-minute hard timeout expires. |
:hb | (none) | Heartbeat comment emitted every 15 seconds. |
Example
The stream has a 5-minute hard timeout. If the background worker takes longer than 5 minutes (due to retries or queue delays), the stream emits
job.failed with errorMessage: "stream-timeout". The worker may still complete in the background — check the report’s status after a short wait.Chat with Nelson (streaming)
Sends a multi-turn conversation to Nelson, PartnerOS’s AI assistant, and streams the response in the UI message stream protocol. This format is compatible with the@ai-sdk/react useChat hook for building in-app chat interfaces.
POST /api/ai/chat
Body parameters
Array of conversation messages. Must contain at least one message.
The user’s current app route (e.g.
"/partners"). Nelson uses this to provide context-aware answers when the user refers to “this page” or “where I am”.Streaming response
The response body uses the UI message stream protocol. Consume it withuseChat from @ai-sdk/react, or parse the stream manually using the standard data stream part format.