Direct REI has a REST API and outbound webhooks, so external tools — Zapier, lead-gen forms, spreadsheets, your own scripts — can talk to your CRM directly. Available on every paid plan.
Get an API key
Go to Settings → API & Zapier and click + Create API key. The full key is shown once — copy it right away. If you lose it, revoke it and create a new one (you can hold up to 5 active keys, and only the account owner can manage them). Send the key on every request as a header: Authorization: Bearer drei_…
What the API can do
- Import leads — POST /v1/contacts creates contacts (one or up to 100 at a time). Duplicates are detected by email and by phone in any format, and you choose what happens: skip them (default), update the existing contact, or create anyway.
- Export leads — GET /v1/contacts lists your contacts with filters (role, status, tag, market, created/updated since) and pagination. It includes fields the CSV export doesn't, like extra phones and emails.
- Update a contact — PATCH /v1/contacts/:id changes fields, adds/removes tags, or appends a note.
- Enroll in a campaign — POST /v1/contacts/:id/enroll adds the contact to a campaign's member list. This is membership only — no message is queued by the API itself (see the automation tip below).
- Read-only lists — GET /v1/campaigns (to find campaign ids), /v1/deals, /v1/properties.
- Test a key — GET /v1/me answers with your account name and plan (Zapier connection tests use this).
Requests are limited to 120 per minute per account. The full reference with copy-paste examples lives at directrei.com/api-docs.
Webhooks: trigger Zaps instantly
Webhooks push events TO your tools the moment they happen. Three events are available:
- New lead — a contact is created (from ANY source: the API, a CSV import, your website's lead form, Property Records imports).
- Lead replied — a contact's status becomes replied.
- Opted out — a contact opts out of email or texts (the event says which channel).
Each delivery is one JSON event with the contact's details, signed with a secret you can view under the webhook's Secret button. Failed deliveries retry automatically; a webhook that keeps failing is paused and you get an email. Use the Test button to fire a sample event any time.
Zapier recipes
- Trigger (Direct REI → your Zap): in Zapier, add Webhooks by Zapier → Catch Hook and copy its URL. In Settings → API & Zapier click + Add webhook, paste the URL, pick your events, then hit Test so Zapier sees a sample.
- Action (your Zap → Direct REI): add Webhooks by Zapier → POST, set the URL to the base URL + /contacts, set Payload Type to json (it defaults to form — the #1 mistake), add a header
Authorizationwith your key, and map your fields (name, email, phone, market, tags…).
Auto-start a campaign for imported leads
Want API-imported leads texted or emailed automatically? Use an automation: Tasks → Automations → New rule — trigger When a new lead is added, condition only if Source is api, action Enroll in a campaign. The automation enrolls them AND queues the campaign's first message, with every compliance gate (opt-outs, engaged statuses) applied.