Skip to content

API Documentation

Integrate Meltly's icebreaker generation directly into your application.

Introduction

The Meltly API allows you to programmatically generate personalized icebreakers, P.S. lines, and conversation starters for LinkedIn profiles. It leverages advanced AI to analyze profiles and create warm, non-robotic outreach messages.

Authentication

All API requests require an API key passed via the x-api-key header. You can find your API key in your Dashboard. Create and manage keys from your dashboard - new keys start with mlt_; keys created earlier are 64-character hex strings and keep working.

Usage Modes

1. Opener

Perfect for the first line of a cold DM or connection request. Uses a recent post or shared experience.

2. P.S. Line

A casual add-on for the end of an email. Great for showing you did your homework without being creepy.

3. Talking points

Generates 2-3 topics you could discuss with this person based on their experience and interests.

Rate Limits

Limits apply per authentication method, not per plan:

Auth MethodLimit
API KeyNo internal rate limit - your credits are the ceiling
Dashboard / Session5 requests per 10 seconds
Guest2 requests per 10 seconds

HEADS UP: Dashboard and guest limits use a rolling window - there is no fixed daily reset.

GEThttps://melt.ly/api/user/credits

Check the authenticated user's current credit balance, including subscription credits, pay-as-you-go credits, total available credits, and the order in which credits are consumed.

Code Example

cURL
curl -X GET https://melt.ly/api/user/credits \
  -H "x-api-key: YOUR_API_KEY"

Success Response

{
  "success": true,
  "subscriptionCredits": 12,
  "paygCredits": 7,
  "totalCredits": 19,
  "canGenerate": true,
  "deductionOrder": ["subscription", "payg"],
  "credits": {
    "total": 19,
    "subscription": {
      "remaining": 12,
      "resets": true,
      "resetsAt": "2026-07-13T00:00:00.000Z",
      "active": true,
      "status": "active",
      "tier": 100,
      "billingCycle": "month",
      "cancelAtPeriodEnd": false
    },
    "payg": {
      "remaining": 7,
      "expires": false,
      "expiresAt": null
    }
  }
}
FieldDescription
credits.subscriptionCredits from an active subscription. These are consumed before PAYG credits and reset on renewal.
credits.paygOne-time purchased credits. These do not expire.
deductionOrderThe order Meltly uses when spending credits for generation requests.
POSThttps://melt.ly/api/generate

Request Body

JSON Payload
{
  "linkedin_url": "https://linkedin.com/in/noamdorokhov",
  "type": "opener" // "opener" | "ps" | "talking_points"
}
ParameterTypeDescription
linkedin_urlstringThe full URL of the LinkedIn profile you want to analyze.
typestringOne of: opener, ps, talking_points

Code Examples

cURL
curl -X POST https://melt.ly/api/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "linkedin_url": "https://linkedin.com/in/williamhgates",
    "type": "opener"
  }'
JavaScript (Fetch)
const response = await fetch('https://melt.ly/api/generate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    linkedin_url: 'https://linkedin.com/in/williamhgates',
    type: 'opener'
  })
});

const data = await response.json();
console.log(data.icebreaker);
Python
import requests

response = requests.post(
    'https://melt.ly/api/generate',
    headers={'x-api-key': 'YOUR_API_KEY'},
    json={
        'linkedin_url': 'https://linkedin.com/in/williamhgates',
        'type': 'opener'
    }
)

data = response.json()
print(data['icebreaker'])

Success Response

{
  "success": true,
  "icebreaker": "I noticed you're advocating for climate tech innovation - love how you're pushing for scalable solutions in the energy sector!"
}

Error Codes

CodeDescription
400Bad Request. Missing LinkedIn URL, or an invalid type (valid: opener, ps, talking_points).
401Unauthorized. The x-api-key you sent doesn't match an active key.
403Out of credits. The response points at melt.ly/pricing. (Guests hitting the free cap get 403 with a signup prompt.)
429Too Many Requests. Dashboard/session traffic is limited to 5 req/10s (2 req/10s for guests) - API-key traffic has no internal rate limit. The error says how many seconds to wait.
500Internal Server Error. Something went wrong on our end - the deducted credit is refunded automatically. API-key callers also get a machine-readable code and detail.
504Generation timed out. The deducted credit is refunded automatically - try again. API-key callers also get a machine-readable code and detail.

Rate Limit Response (429)

{
  "success": false,
  "error": "Too many requests. Try again in 7 seconds."
}

No Credits Response (403)

{
  "success": false,
  "error": "You have no credits remaining. Purchase more at melt.ly/pricing."
}

Need help?

Run into a problem not listed here? Our support team is ready to help you melt the ice.

Contact Us