Direct HTTP access. All endpoints accept and return JSON.
https://api.nondual.cloud/v1
Pass your key in the Authorization header on every authenticated request.
Authorization: Bearer YOUR_KEY
Get a key:
curl -s -X POST https://api.nondual.cloud/v1/keys \ -H "Content-Type: application/json" \ -d '{"email":"you@example.com"}'
Pass the calling agent name in X-Nondual-Agent on write calls. Stored with every interaction.
X-Nondual-Agent: my-sales-agent
Get the full contact profile: name, role, company, do_not_disturb flag, relationship summary, recent interactions, open followups, and recommended next action. Works without a key (3 free per day per IP).
curl -s -X POST https://api.nondual.cloud/v1/get-contact-info \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"contact":"dario@anthropic.com"}'
| Field | Required | Description |
|---|---|---|
contact | yes | Email, LinkedIn URL, phone number, or @handle |
enrich | no | Default true. Set false for a fast workspace-only lookup. |
Response:
{
"contact": {
"id": "contact_...",
"name": "Dario Amodei",
"do_not_disturb": false,
"do_not_disturb_set_at": null,
"identifiers": {
"emails": ["dario@anthropic.com"],
"linkedin_url": "https://linkedin.com/in/darioamodei",
"phones": [],
"handles": []
},
"profile": { "role": "Co-Founder & CEO", "about": "...", "location": "San Francisco, CA" },
"company": { "name": "Anthropic", "domain": "anthropic.com" },
"next": { "action": "Follow up with a concrete proposal." }
},
"enriched": true,
"relationship_summary": "2 interactions. Follow-up is due.",
"recommended_next_action": "Follow up with a concrete proposal.",
"recent_interactions": [],
"open_followups": []
}Record an interaction. Optionally create a followup or complete existing ones in the same call.
curl -s -X POST https://api.nondual.cloud/v1/record-contact-interaction \ -H "Authorization: Bearer YOUR_KEY" \ -H "X-Nondual-Agent: my-agent" \ -H "Content-Type: application/json" \ -d '{"contact":"dario@anthropic.com","channel":"email","direction":"outbound","summary":"Sent intro","followup_action":"Follow up next week"}'
| Field | Required | Values |
|---|---|---|
contact | yes | Email, LinkedIn URL, phone, or @handle |
channel | yes | email call linkedin slack meeting sms other |
direction | no | inbound outbound unknown (default: outbound) |
summary | yes | One sentence describing what happened |
details | no | Full content — email body, transcript, notes. No length limit. |
followup_action | no | Create a followup in the same call |
followup_due | no | ISO date for the followup |
complete_followups | no | "all" or array of followup IDs to complete |
do_not_disturb | no | Set or clear the do-not-disturb flag |
List all open followups with contact snippets. Includes do_not_disturb on each contact.
curl -s "https://api.nondual.cloud/v1/list-open-followups?due_before=2026-08-01" \ -H "Authorization: Bearer YOUR_KEY"
| Query param | Description |
|---|---|
due_before | ISO date — only followups due before this date |
owner | Filter by owner (agent name) |
company | Filter by company domain (exact match) |
All contacts and recent interactions for a company domain. Strict exact match.
curl -s "https://api.nondual.cloud/v1/get-company-activity?domain=anthropic.com" \ -H "Authorization: Bearer YOUR_KEY"
| Query param | Required | Description |
|---|---|---|
domain | yes | Company domain, e.g. acme.com |
| Status | Meaning |
|---|---|
400 | Bad request — missing or invalid fields |
401 | Missing or invalid API key |
429 | Rate limited — daily demo quota or monthly contact lookup quota reached |
500 | Server error — retry with backoff |
All error responses follow:
{ "error": "code", "message": "description" }