Create Custom Links
curl --request POST \
--url https://api-us.hihobbes.com/api/v1/custom-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"links": [
{
"externalId": "<string>",
"displayName": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"company": "<string>",
"context": "<string>",
"shareTitle": "<string>",
"shareDescription": "<string>",
"shareThumbnailUrl": "<string>",
"prospectLogoUrl": "<string>",
"prospectDomain": "<string>",
"active": true
}
]
}
'import requests
url = "https://api-us.hihobbes.com/api/v1/custom-links"
payload = {
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"links": [
{
"externalId": "<string>",
"displayName": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"company": "<string>",
"context": "<string>",
"shareTitle": "<string>",
"shareDescription": "<string>",
"shareThumbnailUrl": "<string>",
"prospectLogoUrl": "<string>",
"prospectDomain": "<string>",
"active": True
}
]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
campaign: {id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', name: '<string>'},
links: [
{
externalId: '<string>',
displayName: '<string>',
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
role: '<string>',
company: '<string>',
context: '<string>',
shareTitle: '<string>',
shareDescription: '<string>',
shareThumbnailUrl: '<string>',
prospectLogoUrl: '<string>',
prospectDomain: '<string>',
active: true
}
]
})
};
fetch('https://api-us.hihobbes.com/api/v1/custom-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "create",
"status": "queued",
"totalItems": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parentJobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdCount": 0,
"failedCount": 0,
"thumbnailQueuedCount": 0,
"thumbnailProcessingCount": 0,
"thumbnailGeneratedCount": 0,
"thumbnailProvidedCount": 0,
"thumbnailFallbackCount": 0,
"thumbnailFailedCount": 0,
"progress": 0,
"pollAfterSeconds": 2,
"cancelRequested": false,
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"detail": "API key required or invalid."
}{
"detail": "API key does not include the required scope."
}{
"detail": "The operation conflicts with current state or idempotency history."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit or organization quota exceeded."
}{
"detail": "The workflow is disabled or temporarily unavailable."
}Custom Links
Create Custom Links
Create one to 500 personalized links as one asynchronous job.
POST
/
api
/
v1
/
custom-links
Create Custom Links
curl --request POST \
--url https://api-us.hihobbes.com/api/v1/custom-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"links": [
{
"externalId": "<string>",
"displayName": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"company": "<string>",
"context": "<string>",
"shareTitle": "<string>",
"shareDescription": "<string>",
"shareThumbnailUrl": "<string>",
"prospectLogoUrl": "<string>",
"prospectDomain": "<string>",
"active": true
}
]
}
'import requests
url = "https://api-us.hihobbes.com/api/v1/custom-links"
payload = {
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"links": [
{
"externalId": "<string>",
"displayName": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"company": "<string>",
"context": "<string>",
"shareTitle": "<string>",
"shareDescription": "<string>",
"shareThumbnailUrl": "<string>",
"prospectLogoUrl": "<string>",
"prospectDomain": "<string>",
"active": True
}
]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
campaign: {id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', name: '<string>'},
links: [
{
externalId: '<string>',
displayName: '<string>',
firstName: '<string>',
lastName: '<string>',
email: '<string>',
phone: '<string>',
role: '<string>',
company: '<string>',
context: '<string>',
shareTitle: '<string>',
shareDescription: '<string>',
shareThumbnailUrl: '<string>',
prospectLogoUrl: '<string>',
prospectDomain: '<string>',
active: true
}
]
})
};
fetch('https://api-us.hihobbes.com/api/v1/custom-links', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "create",
"status": "queued",
"totalItems": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parentJobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdCount": 0,
"failedCount": 0,
"thumbnailQueuedCount": 0,
"thumbnailProcessingCount": 0,
"thumbnailGeneratedCount": 0,
"thumbnailProvidedCount": 0,
"thumbnailFallbackCount": 0,
"thumbnailFailedCount": 0,
"progress": 0,
"pollAfterSeconds": 2,
"cancelRequested": false,
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
}{
"detail": "API key required or invalid."
}{
"detail": "API key does not include the required scope."
}{
"detail": "The operation conflicts with current state or idempotency history."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit or organization quota exceeded."
}{
"detail": "The workflow is disabled or temporarily unavailable."
}Requires
custom_links:write and an Idempotency-Key header.
The response is 202 Accepted with a durable job, a Location header for
polling, and Retry-After: 2. Valid links can be accepted even when other items
fail validation. Read the job items for deterministic per-input outcomes.Authorizations
bearerapiKeyHeader
Hobbes API key with the hb_live_ prefix.
Headers
Required string length:
1 - 255Body
application/json
Response
Successful Response
Available options:
create, thumbnail, retry Available options:
queued, processing, completed, completed_with_errors, cancelled, failed Required range:
0 <= x <= 100Required range:
1 <= x <= 60