Quick Start — End-to-End Endpoint
Generate a personalised message with a single API call.
Before You Start
Complete these 3 steps before making your first request:
- Create an API Key — Generate your key at platform.warmai.uk
- Add Users — Share your connect link (connect.warmai.uk ) with users so they can connect their LinkedIn accounts
- Configure Webhooks (optional) — Set up webhook URLs to receive real-time notifications when messages are ready
Endpoint
POST https://api.warmai.uk/functions/v1/api-full-requestRequired Headers
| Header | Type | Description |
|---|---|---|
x-access-key | UUID | Your API key from the platform dashboard |
x-idempotency-key | UUID | Unique key to prevent duplicate processing |
x-user-id | UUID | The ID of the connected user sending the message |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
prospect_url | string | Yes | LinkedIn profile URL of the prospect |
product_id | string | No | Specific product to reference in the message |
additional_research | string | No | Extra context about the prospect to guide message generation |
template | object | No | Override default message settings (tone, length, etc.) |
research_summary | string | No | Pre-generated research summary to skip the research step |
LinkedIn URL Format: Only personal LinkedIn profile URLs are supported. Company pages, posts, and other URL types will be rejected.
Valid:
https://www.linkedin.com/in/johndoehttps://linkedin.com/in/johndoe/
Invalid:
https://www.linkedin.com/company/acmehttps://www.linkedin.com/posts/johndoe_some-posthttps://www.linkedin.com/in/johndoe/detail/recent-activity
Example Request
cURL
curl -X POST https://api.warmai.uk/functions/v1/api-full-request \
-H "Content-Type: application/json" \
-H "x-access-key: your-api-key-uuid" \
-H "x-idempotency-key: unique-request-uuid" \
-H "x-user-id: connected-user-uuid" \
-d '{
"prospect_url": "https://www.linkedin.com/in/johndoe",
"product_id": "product-uuid",
"additional_research": "Met at SaaS Connect 2026"
}'JavaScript
const response = await fetch(
"https://api.warmai.uk/functions/v1/api-full-request",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"x-access-key": "your-api-key-uuid",
"x-idempotency-key": crypto.randomUUID(),
"x-user-id": "connected-user-uuid",
},
body: JSON.stringify({
prospect_url: "https://www.linkedin.com/in/johndoe",
product_id: "product-uuid",
additional_research: "Met at SaaS Connect 2026",
}),
}
);
const data = await response.json();
console.log(data);Example Response
{
"status": "completed",
"message_id": "msg-uuid",
"generated_message": "Hi John, I noticed your recent work on...",
"research_summary": {
"recommended_focus": "AI automation for sales teams",
"prospect_insights": ["Leads a 50-person sales org", "Recently expanded into EMEA"],
"messaging_strategy": "Lead with their EMEA expansion challenges",
"product_alignment": "Direct fit with multi-region outreach tooling",
"should_send_message": true
},
"message_metadata": {
"message_type": "connection_request",
"word_count": 42,
"character_count": 267
}
}Processing State (202)
If the request is still being processed, you will receive a 202 Accepted response. To check the result, poll the same endpoint with the same idempotency key:
{
"status": "processing",
"message": "Your request is being processed. Retry with the same idempotency key to check the result."
}Using the same idempotency key for a retry will not create a duplicate request. It will return the result of the original request once processing is complete.
Next Steps
- Authentication — Detailed guide on API keys and headers
- Endpoints — Individual endpoints for fine-grained control
- Webhooks — Set up real-time notifications
Last updated on