
CurviatexTwain
Draft LinkedIn messages with Twain. Connect the two with Curviate’s webhooks and API, then build the flow you need.
What is Twain?
Twain is a go-to-market agent platform that uses real-time research and qualification to write personalized one-to-one outreach emails and sequences. B2B sales and marketing teams use it.
Visit twain.aiHow Twain works with Curviate
Create a personal image, video or page for each person in Twain, store its link on the Curviate contact, and use it in your Motion’s messages. Every account in the Motion sends it the same way.
Contacts outenrollment.started
extra fieldsmessage templatesWhat you can build
Three flows teams set up first. Each one takes a few minutes.

A personal link in every message
Each contact gets their own Twain link, and your message template drops it in.
POST /v1/contacts
Fresh assets for new contacts
When a contact starts a Motion, Twain creates their asset, the link is saved and the Motion continues.
POST /v1/enrollments/{id}/signalReplies to your team
When someone replies on LinkedIn, your team hears about it in Slack.
message.receivedSet up Twain with Curviate
Everything runs on two things Curviate gives every account: signed webhooks out and a REST API in.
- 1
Copy your Curviate API key
In the Curviate dashboard, open Settings, then API & Webhooks, and copy your key.
# keep it in your tool's credentials, never in plain text
CURVIATE_API_KEY=cvt_live_••••3f9a - 2
Create the asset in Twain
Make the personal image, video or page in Twain, by hand or from a template, and copy its link.
- 3
Save the link on the contact
Store the link as an extra field on the Curviate contact.
POST https://api.curviate.com/v1/contacts
{ "linkedin_url": "linkedin.com/in/lenaweber",
"extra": { "asset_url": "https://…" } } - 4
Let the Motion continue
Creating assets on the fly? Start the sequence with a wait for the signal
asset_ready, with a timeout. Point amotionwebhook at your flow:enrollment.startedcarries theenrollment_idyou signal once the link is saved.POST https://api.curviate.com/v1/enrollments/enr_…/signal
{ "name": "asset_ready" } - 5
Use it in your message
Add the field to your Motion’s message template, with a fallback text for anyone without a link. Every account in the Motion sends the person their own link.
Hi {{contact.first_name}}, I made this for you:
{{contact.extra.asset_url}}
Events you can use
message.receivedA LinkedIn message or InMail arrivedconnection.acceptedSomeone accepted an invitation you sent through Curviateenrollment.finishedA contact finished a Motion, with the reasonmotion.signalA Motion reached a step you marked to notify youpost.publishedA scheduled post went liveaccount.reconnect_neededAn account needs to sign in againActions you can call
POST /v1/contactsAdd or update a contactPOST /v1/motions/{id}/contactsStart a Motion for contactsPOST /v1/{account_id}/chats/{chat_id}/messagesSend a messagePOST /v1/enrollments/{id}/signalTell a waiting Motion to continueGET /v1/{account_id}/companies/{identifier}Read a company pageQuestions about Curviate x Twain
Which fields can a message use?
Any contact field, plus any extra field you store, such as a video or page link from Twain.
Does it work for every account in a Motion?
Yes. The link lives on the contact, so whichever account reaches out sends the same personal asset.
Do I need a developer?
No. n8n, Make or Zapier can create the asset in Twain and save the link to Curviate.
More content and personalization
Connect Twain today.Free for 7 days.
Create your API key, point a webhook at Twain and run your first flow.


