GuidesCode
Java Integration
How to use the personalize.marketing API with Java
Java 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
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class PersonalizeExample {
// ============ CONFIGURE THESE ============
private static final String API_KEY = System.getenv("PERSONALIZE_API_KEY");
private static final String PROFILE_URL = "https://linkedin.com/in/arnold-schwarzenegger/";
private static final String 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?""";
private static final String BRAND_CONTEXT = "We are a fitness supplement brand targeting health-conscious entrepreneurs";
private static final String AI_INSTRUCTIONS = "Keep the tone professional but friendly";
// =========================================
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofMinutes(5))
.build();
String jsonBody = String.format("""
{
"profile_url": "%s",
"template": "%s",
"brand_context": "%s",
"ai_instructions": "%s",
"enable_brand_fit_score": false,
"include_profile_report": false,
"include_raw_data": false
}
""", PROFILE_URL, TEMPLATE.replace("\n", "\\n").replace("\"", "\\\""), BRAND_CONTEXT, AI_INSTRUCTIONS);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://personalize.marketing/api/v1/personalize-api"))
.timeout(Duration.ofMinutes(5))
.header("Authorization", "Bearer " + API_KEY)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}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.