Craft the perfect cold email and build a structured outreach playbook — all driven by your specific professional goal and LinkedIn profile.
Note: Steps 1 and 2 are required before calling any business API. Complete them in order to obtain a
token.
Send a verification code to the user's email address.
bash
curl --location --request POST 'https://api.articuler.ai/user/send-check' \
--header 'Content-Type: application/json' \
--data '{
"email": "your@email.com",
"type": 1
}'
FieldTypeDescriptionemailstringThe user's email addresstypeintegerVerification type, use 1 for standard check
The verification code will be sent to the user's inbox. Ask the user to provide the captcha code before proceeding to Step 2.
Log in with the user's email, captcha code, and LinkedIn profile URL. Returns a token required for all subsequent API calls.
bash
curl --location --request POST 'https://api.articuler.ai/user/artclaw/login' \
--header 'Content-Type: application/json' \
--data '{
"email": "your@email.com",
"captcha": "xxxxxx",
"linkedin_url": "https://www.linkedin.com/in/your-profile/"
}'
FieldTypeDescriptionemailstringThe user's email addresscaptchastringThe verification code received in the user's inbox (from Step 1)linkedin_urlstringThe user's own LinkedIn profile URL
json
{
"token": "xxxxxx"
}
Save the token — it is required for all subsequent API calls.
Submit a playbook generation job for the current user and a target contact. This is an async API — it returns a sessionId immediately. Use Step 4 to poll for the result.
bash
curl --location --request POST 'https://api.articuler.ai/user/artclaw/playbook' \
--header 'Content-Type: application/json' \
--data '{
"token": "xxx",
"target_linkedin_url": "https://www.linkedin.com/in/your-target-profile/",
"objective": "Want to be a partner"
}'
FieldTypeDescriptiontokenstringAuth token obtained from Step 2target_linkedin_urlstringThe target contact's LinkedIn profile URLobjectivestringThe goal of this outreach (e.g. "Want to be a partner")
json
{
"code": 0,
"msg": "",
"data": {
"sessionId": "31ee76d4-ab7e-4d5f-8196-f4507ef779b9",
"status": "searching"
}
}
Save the sessionId — it is used to poll for the result in Step 4.
Poll this endpoint repeatedly until status is "done". When done, read the playbook content from the response.
bash
curl --location --request GET 'https://api.articuler.ai/user/artclaw/playbook/info?sess_id=xxx' \
--header 'Content-Type: application/json'
FieldTypeDescriptionsess_idstringThe sessionId returned from Step 3
data.status === "done"status remains "searching" after 300 seconds, inform the user that generation is taking longer than expected and ask whether to keep waitingjson
{
"code": 0,
"msg": "",
"data": {
"sessionId": "31ee76d4-ab7e-4d5f-8196-f4507ef779b9",
"status": "searching",
"objective": "Want to be a partner",
"playbook": { "subtopics": null },
"doOrNot": { "do": null, "doNot": null }
}
}
json
{
"code": 0,
"msg": "",
"data": {
"sessionId": "31ee76d4-ab7e-4d5f-8196-f4507ef779b9",
"status": "done",
"objective": "Want to be a partner",
"playbook": {
"subtopics": [
{
"subtopicName": "Absence of Personal Information for Mason Brown",
"insights": [
{
"insight": {
"title": "No Verified Personal Background or Professional Activities Available for Mason Brown",
"content": "Despite extensive search, no confirmed profiles...",
"referenceLinks": []
}
}
]
},
{
"subtopicName": "Monroe Street Partners' Strategic Differentiators",
"insights": [
{
"insight": {
"title": "Non-Traditional Private Equity Model Focused on Long-Term Value",
"content": "Monroe Street Partners (MSP), founded in ...",
"referenceLinks": [
"https://www.monroestreet-partners.com/aboutmsp",
"https://static1.squarespace.com/static/6218510..."
]
}
}
]
}
]
},
"doOrNot": {
"do": [
{
"title": "Discuss Monroe Street Partners' Unique PE Model and Financing Needs",
"contentList": [
"Leverage intelligence about MSP being ..."
]
},
{
"title": "Explore Synergies Between Mason's DCM Experience and MSP's Lower Middle-Market Focus",
"contentList": [
"Mason's background in Debt Capital Markets at PNC..."
]
},
{
"title": "Address Current Private Credit Market Trends Relevant to MSP's Strategy",
"contentList": [
"The industry context shows private credit doubling..."
]
}
],
"doNot": [
{
"title": "Avoid Pushing a Generic \"Off-the-Shelf\" Lending Solution",
"contentList": [
"Monroe Street Partners explicitly differentiates ..."
]
},
{
"title": "Refrain from Unsubstantiated Assumptions about Mason's Booth Studies or Long-Term Career Plans",
"contentList": [
"While Mason is attending Booth, his specific degree..."
]
},
{
"title": "Do Not Undervalue Mason's Role as a Summer Associate",
"contentList": [
"Although a Private Equity Summer Associate role is ..."
]
}
]
}
}
}
Present the playbook.subtopics, doOrNot.do, and doOrNot.doNot to the user in a readable format.
Submit a cold email generation job. Same async pattern as Steps 3–4: returns a sessionId immediately, use Step 6 to poll for the result.
bash
curl --location --request POST 'https://api.articuler.ai/user/artclaw/coldemail' \
--header 'Content-Type: application/json' \
--data '{
"token": "xxx",
"target_linkedin_url": "https://www.linkedin.com/in/your-target-profile/",
"objective": "Want to be a partner"
}'
FieldTypeDescriptiontokenstringAuth token obtained from Step 2target_linkedin_urlstringThe target contact's LinkedIn profile URLobjectivestringThe goal of this cold email (e.g. "Explore investment opportunities")
json
{
"code": 0,
"msg": "",
"data": {
"sessionId": "2c6ae07f-bde7-4f6a-8cc6-944a99d742fd",
"status": "searching"
}
}
Save the sessionId — it is used to poll for the result in Step 6.
Poll this endpoint repeatedly until status is "done". When done, read the email content from the response.
bash
curl --location --request GET 'https://api.articuler.ai/user/artclaw/coldemail?sess_id=xxx' \
--header 'Content-Type: application/json'
FieldTypeDescriptionsess_idstringThe sessionId returned from Step 5
data.status === "done"status remains "searching" after 300 seconds, inform the user that generation is taking longer than expected and ask whether to keep waitingjson
{
"code": 0,
"msg": "",
"data": {
"sessionId": "2c6ae07f-bde7-4f6a-8cc6-944a99d742fd",
"status": "searching",
"objective": "Want to be a partner",
"subject": "",
"coldEmail": ""
}
}
json
{
"code": 0,
"msg": "",
"data": {
"sessionId": "2c6ae07f-bde7-4f6a-8cc6-944a99d742fd",
"status": "done",
"objective": "Want to be a partner",
"subject": "Exploring a potential partnership",
"coldEmail": "Hi [Name],\n\nI came across your work on..."
}
}
Always show the subject and coldEmail to the user for review before sending. Never auto-send.
Articuler provides an MCP server as an alternative to the REST API above.
Endpoint: https://www.articuler.ai/mcp
ToolDescriptiongenerate_cold_emailGenerate a personalized cold email given two LinkedIn profiles and an objectivegenerate_playbookGenerate a multi-step outreach playbook given two LinkedIn profiles and an objective
Detect the user's networking intent from their objective to set the right tone and structure:
IntentKeywordsfundraising融资、投资人、VC、pre-seedhiring招聘、合伙人、CTO、团队partnership合作、BD、渠道、资源置换research了解行业、调研、趋势sales客户、企业采购、demo
objective, the more targeted the output