REST API

Direct HTTP access. All endpoints accept and return JSON.

Base URL

https://api.nondual.cloud/v1

Authentication

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"}'

Agent attribution

Pass the calling agent name in X-Nondual-Agent on write calls. Stored with every interaction.

X-Nondual-Agent: my-sales-agent

POST /get-contact-info

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"}'
FieldRequiredDescription
contactyesEmail, LinkedIn URL, phone number, or @handle
enrichnoDefault 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": []
}

POST /record-contact-interaction

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"}'
FieldRequiredValues
contactyesEmail, LinkedIn URL, phone, or @handle
channelyesemail call linkedin slack meeting sms other
directionnoinbound outbound unknown (default: outbound)
summaryyesOne sentence describing what happened
detailsnoFull content — email body, transcript, notes. No length limit.
followup_actionnoCreate a followup in the same call
followup_duenoISO date for the followup
complete_followupsno"all" or array of followup IDs to complete
do_not_disturbnoSet or clear the do-not-disturb flag

GET /list-open-followups

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 paramDescription
due_beforeISO date — only followups due before this date
ownerFilter by owner (agent name)
companyFilter by company domain (exact match)

GET /get-company-activity

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 paramRequiredDescription
domainyesCompany domain, e.g. acme.com

Errors

StatusMeaning
400Bad request — missing or invalid fields
401Missing or invalid API key
429Rate limited — daily demo quota or monthly contact lookup quota reached
500Server error — retry with backoff

All error responses follow:

{ "error": "code", "message": "description" }