Submit enrichment
Enrich one contact or a batch of contacts with requested fields such as verified email, phone, and signals. Small contact-only requests can complete immediately; larger requests return an operation to poll.
POST
/
api
/
enrichments
Submit enrichment
curl --request POST \
--url https://developer.thehog.ai/api/enrichments \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Secret-Key: <api-key>' \
--data '
{
"fields": [
"contact.email",
"signals"
],
"identifier": {
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
},
"identifiers": [
{
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
}
],
"signals_config": {
"platforms": [
"<string>"
],
"max_posts": {},
"intent_signals": [
"<string>"
],
"since_days": 123,
"handles": {}
}
}
'const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
fields: ['contact.email', 'signals'],
identifier: {
linkedin_url: '<string>',
email: '<string>',
x_handle: '<string>',
github_username: '<string>'
},
identifiers: [
{
linkedin_url: '<string>',
email: '<string>',
x_handle: '<string>',
github_username: '<string>'
}
],
signals_config: {
platforms: ['<string>'],
max_posts: {},
intent_signals: ['<string>'],
since_days: 123,
handles: {}
}
})
};
fetch('https://developer.thehog.ai/api/enrichments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://developer.thehog.ai/api/enrichments"
payload = {
"fields": ["contact.email", "signals"],
"identifier": {
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
},
"identifiers": [
{
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
}
],
"signals_config": {
"platforms": ["<string>"],
"max_posts": {},
"intent_signals": ["<string>"],
"since_days": 123,
"handles": {}
}
}
headers = {
"X-Access-Key": "<api-key>",
"X-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {},
"meta": {
"requestId": "<string>"
}
}{
"id": "<string>",
"operationId": "<string>",
"status": "queued",
"pollUrl": "<string>",
"meta": {
"requestId": "<string>"
}
}{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
"errors": [
{
"property": "body.query",
"message": "query must be a string",
"constraints": {
"isString": "query must be a string"
}
}
]
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication is required.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Insufficient credits.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}POST /api/enrichments
Schema-driven person enrichment. Returns 200 sync or 202 async.Performs schema-driven person enrichment. Provide an identifier and requested fields.
Example
curl -X POST https://developer.thehog.ai/api/enrichments \
-H "X-Access-Key: ak_xxxxxxxxxxxxxxxx" \
-H "X-Secret-Key: sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"identifier": {"linkedin_url": "https://linkedin.com/in/johndoe"}, "fields": ["contact.email", "profile"]}'
Authorizations
The public API key from the Credentials page.
The API secret shown when the credential is created.
Headers
Prevents duplicate work if you retry the same request with the same key.
Body
application/json
⌘I
Submit enrichment
curl --request POST \
--url https://developer.thehog.ai/api/enrichments \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Secret-Key: <api-key>' \
--data '
{
"fields": [
"contact.email",
"signals"
],
"identifier": {
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
},
"identifiers": [
{
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
}
],
"signals_config": {
"platforms": [
"<string>"
],
"max_posts": {},
"intent_signals": [
"<string>"
],
"since_days": 123,
"handles": {}
}
}
'const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
fields: ['contact.email', 'signals'],
identifier: {
linkedin_url: '<string>',
email: '<string>',
x_handle: '<string>',
github_username: '<string>'
},
identifiers: [
{
linkedin_url: '<string>',
email: '<string>',
x_handle: '<string>',
github_username: '<string>'
}
],
signals_config: {
platforms: ['<string>'],
max_posts: {},
intent_signals: ['<string>'],
since_days: 123,
handles: {}
}
})
};
fetch('https://developer.thehog.ai/api/enrichments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://developer.thehog.ai/api/enrichments"
payload = {
"fields": ["contact.email", "signals"],
"identifier": {
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
},
"identifiers": [
{
"linkedin_url": "<string>",
"email": "<string>",
"x_handle": "<string>",
"github_username": "<string>"
}
],
"signals_config": {
"platforms": ["<string>"],
"max_posts": {},
"intent_signals": ["<string>"],
"since_days": 123,
"handles": {}
}
}
headers = {
"X-Access-Key": "<api-key>",
"X-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {},
"meta": {
"requestId": "<string>"
}
}{
"id": "<string>",
"operationId": "<string>",
"status": "queued",
"pollUrl": "<string>",
"meta": {
"requestId": "<string>"
}
}{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
"errors": [
{
"property": "body.query",
"message": "query must be a string",
"constraints": {
"isString": "query must be a string"
}
}
]
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication is required.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Insufficient credits.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}