Reevo provides API keys that allow you to connect external tools and automate data flow into your workspace. With API keys, you can push contacts from platforms like Clay or Zapier, build custom integrations, or sync data from your own systems directly into Reevo without manual entry.API keys use a permission-based system, allowing you to control exactly what each key can access. This means you can create separate keys for different integrations with only the permissions they need.
Give your key a descriptive name (for example, “Clay Integration” or “Zapier Webhook”)
Select the permissions your integration needs:
Permissions
Read
Write
Accounts
✓
✓
Contacts
✓
✓
Opportunities
✓
✓
Tasks
✓
✓
Activities
X
✓
Users
✓
X
Mailbox
✓
X
Sequence Enrollment
✓
✓
Webhooks
✓
✓
Read permissions allow an API key to view and retrieve data, but not modify it. For example, with Accounts Read, you can fetch account information but cannot create or update accounts.Write permissions allow an API key to create, update, or modify data. Importantly, write permissions automatically include read permissions for the same resource. So if you have Contacts Write, you can both read and write contact data without needing to also select Contacts Read.
Click Generate
Important: Copy the API key immediately and store it securely. You will not be able to view it again after closing the popup.
Assigning a new HTTP API and include your API key in the request header:
Header name: x-api-key
Header value: Your API key
The system automatically validates that your key has the required permissions for each request. If a key lacks necessary permissions, the request will be rejected with a clear error message indicating which permissions are missing.
Set your request details
Endpoint: See available endpoints below.
Query Parameter:
Key: payload_type
Value: json
Define the body of your request. See example requests and supported values for each endpoint below:
Account Contact
This does upsert for account and contact.Supported values:
Update an existing account by its ID. You can retrieve an account ID from the Search by domain name endpoint, or from the account URL in your Reevo workspace.Path parameter:{account_id} - the UUID of the account to update.Supported values:
Retrieve a specific account by its ID.Path parameter:{account_id} - the UUID of the account to retrieve.Example full request:
curl -X GET "https://api.reevo.ai/api/v1/public/accounts/{account_id}" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key"
Search by domain name (contains)
Search for accounts whose domain name contains the given string. Returns matching accounts with their full profile, owner email, and custom fields.Supported values:
domain_name: str*limit: int = 100offset: int = 0
Example full request:
curl -X POST "https://api.reevo.ai/api/v1/public/accounts/search" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key" \ -d '{"domain_name": "acme.com"}'
Retrieve a specific contact by ID. Returns the contact’s profile, owner, custom fields, and associated account/opportunity links where applicable.Path parameter:{contact_id} - the UUID of the contact to retrieve.Example full request:
curl -X GET "https://api.reevo.ai/api/v1/public/contacts/{contact_id}" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key"
Search
Search contacts by contact email or owner email. At least one of contact_email or owner_email is required.Supported values:
contact_email: EmailStr | None = Noneowner_email: EmailStr | None = Nonelimit: int = 50offset: int = 0
Example full request:
curl -X POST "https://api.reevo.ai/api/v1/public/contacts/search" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key" \ -d '{ "contact_email": "jane.doe@acme.com" }'
Opportunities
Create
Create a new opportunity tied to an existing account. The account must already exist in your CRM (use the Accounts > Create or Search by domain name endpoint to look it up).Supported values:
Update an existing opportunity by its ID. You can retrieve an opportunity ID from the Search endpoint, or from the opportunity URL in your Reevo workspace.Path parameter:{opportunity_id} - the UUID of the opportunity to update.Supported values:
Opportunity stage cannot be changed via PATCH. To shift an opportunity to a different stage, use the Shift Stage endpoint instead.
Example full request:
curl -X PATCH "https://api.reevo.ai/api/v1/public/opportunities/{opportunity_id}" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key" \ -d '{ "amount": 95000.00, "next_step_details": "Send final proposal and contract for review", "next_step_due_at": "2024-02-20T10:00:00Z", "custom_fields": { "deal_stage": "Proposal Sent", "probability": "90%" } }'
Get By ID
Retrieve a specific opportunity by its ID.Path parameter:{opportunity_id} - the UUID of the opportunity to retrieve.Example full request:
curl -X GET "https://api.reevo.ai/api/v1/public/opportunities/{opportunity_id}" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key"
Search
Search for opportunities by display name, account, owner, status, or pipeline stage. Returns matching opportunities with their full profile and custom fields.Supported values:
closed_reason_names is required when shifting to a closed stage (won/lost). The system automatically determines whether these should be won or lost reasons based on the target stage.
Example full request:
curl -X POST "https://api.reevo.ai/api/v1/public/opportunities/{opportunity_id}/shift_stage" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key" \ -d '{ "target_stage_name": "Qualified" }'
Tasks
Create a new task for a user, optionally tied to an account, contact, or opportunity. Tasks appear in the assigned user’s task list in Reevo.Supported values:
curl -X POST "https://api.reevo.ai/api/v1/public/tasks" \ -H "Content-Type: application/json" \ -H "x-api-key: Your API Key" \ -d '{ "title": "Create Task API Test", "owner_email": "john.doe@acme.com", "type": "REMINDER" }'
Manual Activities
Log a manual activity (such as an SMS, LinkedIn message, social media interaction, or other communication channel) against CRM entities like accounts, contacts, opportunities, or sequences. Useful for capturing touches that happen outside Reevo.Supported values:
curl -X GET \ "https://api.reevo.ai/api/v1/public/account_and_contact_retrieval?contact_email=jane.doe@acme.com" \ -H "X-Api-Key: Your API Key"# ORcurl -X GET \ "https://api.reevo.ai/api/v1/public/account_and_contact_retrieval?contact_phone_number=%2B14151234567" \ -H "X-Api-Key: Your API Key"
Phone numbers must be URL-encoded. The + sign becomes %2B. Example: +14151234567 becomes %2B14151234567.
Publish and run the test to confirm the data is correctly sent to Reevo
Only workspace admins can create API keys. If you need access, ask an admin to either grant you admin permissions or create the key for you.
I lost my API key. Can I retrieve it?
No. For security reasons, API keys are only shown once when created. If you lose a key, you must expire the old one and generate a new one.
What happens if I use an expired key?
Requests using an expired key will be rejected with an “API key has expired” error. You’ll need to generate a new key and update your integration.
Can I use one API key for multiple integrations?
Yes, as long as the key has all the permissions needed by each integration. However, for better security and tracking, consider creating separate keys for each integration.
What does "write permission grants read permission" mean?
If your key has write access to a resource (like Contacts Write), it automatically includes read access too (Contacts Read). You don’t need to select both.
I'm seeing a quota warning. What does that mean?
Your organization has limits on public requests. If you’re approaching or exceeding your quota, contact your account manager to discuss increasing your limits.
Still have questions? Sign in and use AskReevo for instant answers or to raise a support ticket.