Parameters
All available parameters for the generate-content endpoint.
Contact and User Identifier
To create hyper-personalized content, Autobound’s API relies on core identifiers that link the prospect (Contact) and the sender (User). These identifiers enable the system to pull context-specific insights automatically, such as professional history, relevant news events, and company initiatives, etc.
Contact Identifier:
For the sales use case, the Contact is the prospect (the person receiving the message).
This identifier allows Autobound's API to pull in relevant insights about the prospect, such as their interests, work history, recent job changes, company initiatives, and news events related to their organization.
If the system fails to identify the contact, it'll generate content using insights on the company.
User Identifier:
For the sales use case, the User is the seller (the person sending the message).
Similarly, a seller identifier (work email or LinkedIn URL) is essential for personalizing the content from the sender's side. The seller identifier enables the API to incorporate information about the seller, perhaps their shared experiences with the prospect, their position, or their company’s value proposition.
This ensures that the content generated not only appeals to the prospect but also accurately represents the seller and their brand.
Other parameters
Beyond the core identifiers, Autobound’s API offers additional parameters to enhance personalization further.
For example, the additionalContext parameter allows you to pass in extra information—like recent interactions or intent data—that helps guide the AI’s focus.
Parameters like wordCount and writingStyle give you control over message length and tone, optimizing the content to meet specific outreach needs and improving engagement resolution.
Snapshot
Here's a quick overview of all parameters. Keep scrolling for more details on each.
Parameter | Description | Type | Required |
---|---|---|---|
contactEmail | Email address of the contact | identifier | Yes |
contactLinkedinUrl | LinkedIn URL of the contact | identifier | Yes |
userEmail | Email address of the user | identifier | Yes |
userLinkedinUrl | LinkedIn URL of the user | identifier | Yes |
additionalContext | Extra information for customizing generated content | string | No |
contactName | Overwrite contact name | string | No |
contactCompanyName | Overwrite contact's company name | string | No |
contactCompanyUrl | Overwrite contact's company URL | string | No |
contentType | Type of content to generate | string | Yes |
contentToRewrite | Content base for generation | string | No |
customContentType | Custom content output type | string | No |
customWritingStyle | Write your own writing style | string | No |
disabledInsights | Disable specific insights | array | No |
enabledInsights | Only use specific insights | array | No |
model | Model for content generation | string | No |
n | Number of unique content pieces to generate | int | No |
language | Desired language for content | string | No |
salesAsset | Additional sales information | string | No |
sequenceNumberOfEmails | Number of emails in sequence | int | No |
userCompanyName | Overwrite user company name | string | No |
userCompanyUrl | Overwrite user company URL | string | No |
userName | Overwrite user name | string | No |
valueProposition | Set value proposition | string | No |
wordCount | Approximate word count for output | int | No |
writingStyle | Writing style for content generation | string | No |
All Parameters
Identifiers
- Contact identifier: either
contactEmail
orcontactLinkedinUrl
is required.contactEmail
: The email address of the contact (prospect) the user (seller) is reaching out to.contactLinkedinUrl
: The LinkedIn URL of the contact the user is reaching out to.
- User identifier: either
userEmail
oruserLinkedinUrl
is required.userEmail
(required): The email address of the user the content is written on behalf of.userLinkedinUrl
: The LinkedIn URL of the user the content is written on behalf of..
Note - waterfall logic ensures that content still generates even if our system cannot identify the user or prospect's email address, so long as we can figure out their company from their domain, which is extracted from their email. This ensures a 99.8% success rate in generating content outputs.
additionalContext
(optional): String. This field allows for further customization of the generated content by providing specific guidelines or data to be included in the message. The information should be passed in instruction format. For example, you could paste in a webpage and say "The prospect visited this web page pasted below, incorporate the topics into the email." This flexibility is powerful - you could incorporate intent data, mention past interactions logged in the CRM, or highlight any other relevant information. Character limit is 10,000.
contactName
(optional): String. If provided, this overwrites the contact name that the system automatically finds. Our system will resolve this from nothing more than an email, but sometimes we can't find the person's name. Including this field increases the chance the email will output an A+ email where the name was matched. If it can't be found, the system will currently output [PROSPECT NAME].
contactCompanyName
(optional): String. If provided, this overwrites the contact's company name that the system automatically finds.
contactCompanyUrl
(optional): String. If provided, this overwrites the contact's current company URL that the system automatically resolves. This update affects the company name and all associated insights.
contentType
(required): The type of content to be generated. Options are email
, opener
, sms
, connectionRequest
, callScript
, sequence
and custom
contentType. When contentType
is set to "sequence", each email in the sequence consumes 2 credits.
contentToRewrite
(optional): String. This field allows you to input content you'd like to see rewritten, such as an email template or a full email. The system will use this as a base for generating new, personalized content. Now supports both individual emails and sequences. You can use variables like {{contactName}}
, {{contactCompanyName}}
, {{userName}}
, and {{userCompanyName}}
which will be automatically replaced.
- For individual emails (when
contentType
=email
), include the subject line starting with "Subject: " followed by the email body. Optimal results are typically achieved with less than 325 characters or 75 words.
{
"contentType": "email",
"contentToRewrite": "Subject: Exciting opportunity for {{contactName}} at {{contactCompanyName}}\n\nHi {{contactName}},\n\nI hope this email finds you well. I'm {{userName}} from {{userCompanyName}}, and I wanted to reach out about a potential collaboration.\n\nLooking forward to connecting,\n{{userName}}"
}
- For sequences (when
contentType
=sequence
), separate each email with "Step X" (where X is the step number). Only the first step in the sequence needs a subject line. All following steps are treated as replies within the same email thread, so they do not require a new subject line. This mimics a natural email conversation where subsequent messages build on the original context. Here's an example request: Suggested format:
{
"contentType": "sequence",
"sequenceNumberOfEmails": 3,
"contentToRewrite": "Step 1\nSubject: Write hyper-personalized emails with AI\nBody: Hi {{prospectName}},\n\nI'm one of the Autobound Co-Founders. We just launched a tool that auto-generates hyper-personalized emails with AI (based on LinkedIn, news sources, company initiatives, shared experiences, job changes, & more).\n\nWorks with LinkedIn, Outreach, Salesloft, and Gmail, and signup takes <30 seconds.\n\nIt's the tool my co-founder and I always wanted (we're ex Oracle / Yelp sales), and we just raised $4M to make it happen.\n\nOpen to exploring whether Autobound can boost your team's open and reply rates?\n\nBest,\n{{userName}}\n\nStep 2\nBody: Friendly follow up, is writing thoughtful, personalized emails something your team struggles with?\n\nOver 4,000+ SDRs/AEs are using Autobound to maximize productivity (we're the #1 recommended AI-email writer on G2 with 200+ 5-star reviews).\n\nAny interest in exploring whether Autobound can help your team generate more replies?\n\nHere's a 1-min explainer vid if you'd like to learn more first.\n\nBest,\n{{userName}}"
}
While the example format provided above is recommended, the contentToRewrite parameter is designed to be flexible. The system doesn’t require your input to be formatted exactly as shown, as long as it can identify the general structure of each step, including the step number, subject, and body.
You can also further guide the AI's output by embedding specific instructions directly into your email content. These instructions should be placed within brackets [like this], allowing you to give the AI clear directives on how to enhance or personalize the email content.
For example, you can prompt the AI to include specific insights or data points that have been resolved for the prospect:
_"Im one of the Autobound Co-Founders, we just launched a tool that auto-generates hyper-personalized emails with AI (based on LinkedIn, news sources, company initiatives, shared experiences, job changes, & more).
For example, our system found:
[give 2-3 bullets of example insights that Autobound resolved for this prospect]
Interested in seeing how we could help your sales team generate hyper-relevant messaging 60-120x faster?"_
customContentType
(optional): write out your own desired output, like "describe this prospect's personality based on their social media" or "list 20 ice breakers for an upcoming call". These can also be much longer prompts, where you can get creative with the output. Note that if customContentType
is used, you'll need to set contentType
to custom
.
A request with nothing more than the mandated parameters would look like this.
import requests
url = 'https://api.autobound.ai/api/external/generate-content/v3.4'
headers = {
'X-API-KEY': 'YOUR-API-KEY-HERE',
'Content-Type': 'application/json'
}
data = {
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "email"
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
and here's how you'd modify the parameters for a custom content type.
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "custom",
// this is required if customContentType is used.
"customContentType": "write a pre-meeting email to prep for an account executive (the seller) with talking points and insights they can use on their upcoming call with the prospect."
}
disabledInsights
(optional): Array of strings. This parameter specifies the insights you want to explicitly disable in the content generation. The full list can be found here.
When used, the insights listed in this array will be excluded from the response, while all other insights remain enabled or disabled based on the default settings. If both enabledInsights and disabledInsights are provided, the insights in enabledInsights take precedence, meaning they will be enabled even if they are also listed in disabledInsights. The API is designed to handle invalid or unrecognized insight types gracefully. If an invalid insight type is provided, it will be ignored, but a warning won't necessarily be included in the response.
"disabledInsights": ["10-K: Customer Relations_Dealing with negative feedback", "insight_invests_into"]
enabledInsights
(optional): Array of strings. This parameter specifies the insights you want to explicitly enable in the content generation. When used, only the insights listed in this array will be included in the response, effectively overriding any default settings. The list can be found here.
model
(optional): specifies the LLM used for content generation. Only works if contentType = sequence or email. If no value passed in, system uses fine tuned model for email, and opus for sequence. Options are: opus
, sonnet_3.5
, gpt4o
, and fine_tuned
n
(optional) The number of unique pieces of content to generate for the given request. This is set to 1 by default (it not included). The maximum is 3. The n
parameter is not compatible with contentType: "sequence"
language
(optional): specifies the desired language for content generation, ensuring tailored messaging in the recipient's preferred language. This is written out as free-form text, and defaults to "english" if not included.
salesAsset
(optional): Information on a potentially longer piece of text like a related whitepaper, text from a sales deck, text from a web page, etc. Text or information a seller wants to include in their messaging, which could be derived from a webpage scrape focusing on a specific product, the pain points it solves for a certain industry, information on an upcoming event, etc. Character limit is 10,000.
sequenceNumberOfEmails
(optional): Integer. Only applicable when contentType is "sequence". If not provided, defaults to 3. If sequenceNumberOfEmails
or contentToRewrite
is set but contentType
is not "sequence", an error will be returned.
In the below example, we're asking the API to incorporate mention of a recent conversation Daniel had with Ryan's coworker (perhaps pulled from the CRM) with a 1,500 character (truncated for simplicity below) overview of an upcoming marketing event Autobound is hosting.
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "email",
"language": "hebrew",
"additionalContext": "Daniel previously had a conversation with Ryan's coworker Robert.",
"salesAsset": "Join us for a Happy Hour at Dreamforce..."
}
In this example:
contactLinkedinUrl
is the LinkedIn URL of Ryan Bask, the prospect. Note how it's okay that the contact ID is a LinkedIn URL whereas the user ID is an email.userEmail
is the email address of Daniel, the user making the request.contentType
is email, meaning an email will be writtenlanguage
is Hebrew, meaning the output will be in Hebrew.additionalContext
includes an instruction to mention a previous conversation Daniel had with Ryan's coworker, Robert, which will guide the content generation process to include this particular context in the email.salesAsset
provides content about an upcoming happy hour event at Dreamforce, along with instructions for the AI on how to pitch this event in the email.
userCompanyName
(optional): String. If provided, this overwrites the user's company name that the system automatically finds.
userCompanyUrl
(optional): String. If provided, this overwrites the user's current company URL that the system automatically resolves. This update affects the company name and all associated insights.
userName
(optional): String. If provided, this overwrites the user name that the system automatically finds.
valueProposition
(optional): String. If provided, this acts as the userCompanyDescription / default value proposition. Our system keeps updated value propositions on 125,000+ companies by constantly reading company websites and pushing information through sophisticated data pipelines. This ensures up-to-date value propositions are available for real-time API requests. However, API users can pass in their own value proposition if they'd like to overwrite what the system would otherwise output. Character limit is the same as salesAsset (10,000). Content will be truncated if longer.
wordCount
(optional): the number of words (approx) you'd like the output to be. If word count is not passed in, the system will determine how many words to generate. In most scenarios, this is around 80 for email
, 20 for opener
, 50 for connectionRequest
, and 35 for sms
. callScript
is more dynamic.
writingStyle
(optional): This parameter offers flexibility for clients to choose either a preset style or to create their own custom style. Character limit is 10,000. Clients can choose from a range of predefined writing styles. Available presets include:
challenger_sale
: For a conversational and insightful approach.clever_poet
: To craft content with a creative, poetic twist.cxo_pitch
: For concise, executive-level pitches.data_driven
: For content backed by data, statistics, and clear ROI.basho
: For short, personalized content that follow Basho protocol.why_you_why_now
: Demonstrates a sense of urgency tied to the prospect's pain points.
Clients can also specify their own writing style, with customWritingStyle
. When this is used, the parameter, writingStyle
needs to be set to custom
.
Let's walk through a few examples. Using a preset writing style...
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "email",
"writingStyle": "challenger_sale"
}
In this example, the output will sound incorporate the challenger sales methodology. The word count will be determined by the model, unless wordCount
is specified as well.
Using a custom writing style, and also specifying word count (remember, word count is optional).
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "email",
"writingStyle": "custom",
//needs to be set to custom if customWritingStyle is used.
"customWritingStyle": "write at a 6th grade level in British English, very persuasively",
"wordCount": 85
}
Using a custom writing style to write a custom contentType.
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "custom",
"customContentType": "write a 3 email drip sequence that matches this JSON format... ",
"writingStyle": "custom",
"customWritingStyle": "use the following 2 emails to extract my tone and style...",
"wordCount": 250
}
In this last, more advanced scenario, the client is prompting the system to generate multiple emails in a sequence that build on each other and also fit a certain JSON structure. Word count is set to 250, which is a nice, short total length for 3 separate emails (250 / 3 = ~83 words each).
Getting creative
Here's an example JSON showing the true power of Autobound's Personalization API!
{
"contactEmail": "[email protected]",
"userEmail": "[email protected]",
"contentType": "email",
"writingStyle": "custom",
"customWritingStyle": "use the following 2 emails to extract my tone and style...",
//using style extracted from example emails
"salesAsset": "Autobound Logo Integrations Pricing Login Get Started Free Install...",
// sales asset is a scrape of our AI-writer product's site page. About 500 words but the system can process intent very well.
"model": "opus",
// using opus will be slower, but the system will follow advanced instructions more closely.
"additionalContext": "include the following deal notes from a closed lost opp from Hubspot: {dealNotes}",
// context on the contact <> user relationship will be woven into the sequence
"language": "spanish",
// the output will be written in another language
"n": 2,
// 2 versions of the email will be written with different combinations of insights, the user can select which one they like more.
"wordCount": 250
}
Updated 5 days ago