GuidesCode
TypeScript Integration
How to use the personalize.marketing API with TypeScript
TypeScript Integration
Increase Timeout to 5 Minutes
The API analyzes influencer profiles in real-time, which can take up to 300 seconds per request. Set your HTTP client timeout to at least 300 seconds (5 minutes) to avoid premature timeouts.
Prerequisites
You need an API key. See Get Started for instructions.
Security Tip
Store your API key in environment variables to avoid accidentally committing it to git. Never hardcode API keys in your source code.
Example
interface PersonalizeRequest {
profile_url: string;
template: string;
brand_context?: string;
ai_instructions?: string;
enable_brand_fit_score?: boolean;
include_profile_report?: boolean;
include_raw_data?: boolean;
}
// ============ CONFIGURE THESE ============
const API_KEY = process.env.PERSONALIZE_API_KEY!;
const PROFILE_URL = "https://linkedin.com/in/arnold-schwarzenegger/";
const TEMPLATE = `Hey {{first name}},
Love what you are building with {{their company or product}}. We make fitness supplements that would pair perfectly with your brand.
Worth a quick chat?`;
const BRAND_CONTEXT = "We are a fitness supplement brand targeting health-conscious entrepreneurs";
const AI_INSTRUCTIONS = "Keep the tone professional but friendly";
// =========================================
const response = await fetch("https://personalize.marketing/api/v1/personalize-api", {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
profile_url: PROFILE_URL,
template: TEMPLATE,
brand_context: BRAND_CONTEXT,
ai_instructions: AI_INSTRUCTIONS,
enable_brand_fit_score: false,
include_profile_report: false,
include_raw_data: false
} satisfies PersonalizeRequest),
signal: AbortSignal.timeout(300000)
});
console.log(await response.json());Response:
{
"success": true,
"personalized_text": "Hey Arnold,\n\nLove what you are building with The Pump app. We make fitness supplements that would pair perfectly with your brand.\n\nWorth a quick chat?",
"profile_url": "https://linkedin.com/in/arnold-schwarzenegger/",
"brand_fit_score": 9,
"profile_report": "Arnold Schwarzenegger is an entrepreneur, actor, and fitness icon with 500K+ LinkedIn followers. He actively promotes his businesses including The Pump app and his daily newsletter. His content focuses on fitness, motivation, and health advice. High engagement rates with a professional, health-conscious audience.",
"raw_data": {
"profile": {
"firstName": "Arnold",
"lastName": "Schwarzenegger",
"headline": "Businessman | Founder of The Pump",
"followerCount": 500000
},
"posts": ["..."]
}
}Request Fields
| Field | Required | Description |
|---|---|---|
profile_url | Yes | LinkedIn, Instagram, or TikTok profile URL |
template | Yes | Your message with {{instruction}} placeholders (e.g., {{first name}}) |
ai_instructions | No | Custom tone/style instructions for the AI |
brand_context | No | Your brand description for better post matching |
enable_variations | No | Rephrase output to avoid spam detection |
enable_brand_fit_score | No | Get 1-10 brand fit score |
include_profile_report | No | Get detailed influencer analysis |
include_raw_data | No | Get raw profile data (unstable, for debugging only) |
See API Reference for complete documentation.