Skip to content
Pathbound DOCS

Quickstart

You’ll need an API key. Create one in the dashboard, then keep this page open.

curl
curl https://api.pathbound.ai/v1/auth/status \
-H "Authorization: Bearer YOUR_API_KEY"
Node
const res = await fetch('https://api.pathbound.ai/v1/auth/status', {
headers: { Authorization: `Bearer ${process.env.PATHBOUND_API_KEY}` },
});
console.log(await res.json());
Python
import os, requests
res = requests.get(
'https://api.pathbound.ai/v1/auth/status',
headers={'Authorization': f"Bearer {os.environ['PATHBOUND_API_KEY']}"},
)
print(res.json())

You should see your user_id, email, and tenant_id.

curl
curl -X POST https://api.pathbound.ai/v1/contacts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"properties": {
"firstname": "Ada",
"lastname": "Lovelace",
"company": "Analytical Engines",
"lifecyclestage": "lead"
}
}'
Node
const res = await fetch('https://api.pathbound.ai/v1/contacts', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.PATHBOUND_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
properties: {
firstname: 'Ada',
lastname: 'Lovelace',
company: 'Analytical Engines',
lifecyclestage: 'lead',
},
}),
});
const { contact } = await res.json();
console.log(contact._id);
Python
res = requests.post(
'https://api.pathbound.ai/v1/contacts',
headers={
'Authorization': f"Bearer {os.environ['PATHBOUND_API_KEY']}",
'Content-Type': 'application/json',
},
json={
'email': '[email protected]',
'properties': {
'firstname': 'Ada',
'lastname': 'Lovelace',
'company': 'Analytical Engines',
'lifecyclestage': 'lead',
},
},
)
print(res.json()['contact']['_id'])

Save the returned contact._id — you’ll need it to attach events, notes, and actions.

Required scope: contacts:write.

If you’ve installed the tracker on your site, you’ll already have events flowing. Otherwise this returns an empty array.

curl
curl "https://api.pathbound.ai/v1/events?limit=5&sort_dir=desc" \
-H "Authorization: Bearer YOUR_API_KEY"
Node
const url = new URL('https://api.pathbound.ai/v1/events');
url.searchParams.set('limit', '5');
url.searchParams.set('sort_dir', 'desc');
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.PATHBOUND_API_KEY}` },
});
const { events } = await res.json();
console.log(events);
Python
res = requests.get(
'https://api.pathbound.ai/v1/events',
headers={'Authorization': f"Bearer {os.environ['PATHBOUND_API_KEY']}"},
params={'limit': 5, 'sort_dir': 'desc'},
)
for e in res.json()['events']:
print(e['event'], e.get('url'))

Required scope: events:read.

Actions represent unit-of-work outreach (emails, LinkedIn, notes). The example below queues an email for human approval.

Terminal window
curl -X POST https://api.pathbound.ai/v1/actions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "email_message",
"params": {
"contact_id": "ct_abc",
"subject": "Following up",
"message": "Hi Ada — saw you were back on the pricing page yesterday. Worth a quick call?"
},
"identity_id": "id_123",
"require_approval": true
}'

The action enters pending_approval until someone (a human or a key with actions:write) approves it. See Actions.