Zoye LogoZoye Logo
AI AssistantPricingAboutDiscord

Get started

  • Overview
  • Quickstart

Connect

  • No-code embed
  • REST API
  • MCP server

Outbound

  • Webhooks

Reference

  • Rate limits
  • Field reference
  • FAQ
Open the Sync Users & Subscribers connector

Connect

REST API reference

A small, predictable JSON API for syncing contacts into Zoye. Send people or companies, search them, and look one up by id. Authenticate with a Bearer key and you are done.

Base URL

All endpoints are relative to:

Base URL
https://api.zoye.io

Authentication

Every request carries your key in the Authorization header as a Bearer token:

Header
Authorization: Bearer zk_live_YOUR_KEY

Secret vs publishable keys

KeyPrefixCan doUse it
Secretzk_live_...Create, read, search, and write privileged routing fieldsServer-side only
Publishablezk_pub_...Create contacts only (standard fields)Browser-safe, can appear in page source

Privileged fields and publishable keys

If a publishable key sends a privileged field (such as tags or assigneeId), the field is silently ignored and returned to you in the ignoredFields array of the response. The contact is still created from the standard fields. See the field reference for which fields are privileged.

Create a contact

POST/public/v1/contacts

Creates a single contact. Requires at least one of email, phone, or name. Works with both key types (publishable keys are limited to standard fields).

Request
curl https://api.zoye.io/public/v1/contacts \
  -H "Authorization: Bearer zk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jordan Rivera",
    "email": "jordan@northwind.com",
    "phone": "+1 555 0100",
    "company": "Northwind Inc",
    "position": "Head of Ops",
    "type": "person",
    "source": "website-form",
    "notes": "Asked about the Growth plan",
    "customFields": { "Budget": "5k-10k" },
    "tags": ["inbound", "priority"]
  }'
Response
JSON
{
  "id": "ctc_9aZ2bQ",
  "created": true,
  "ignoredFields": [],
  "unresolvedCustomFields": []
}

ignoredFields lists any privileged fields dropped because the key was publishable. unresolvedCustomFields lists any custom-field labels that did not match an existing custom field in your workspace.

Create contacts in batch

POST/public/v1/contacts/batch

Creates up to 100 contacts in one request. Send a contacts array of the same objects you would post to the single endpoint.

Request
curl https://api.zoye.io/public/v1/contacts/batch \
  -H "Authorization: Bearer zk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      { "name": "Jordan Rivera", "email": "jordan@northwind.com" },
      { "name": "Sam Lee", "email": "sam@globex.com", "company": "Brightwave" }
    ]
  }'
Response
JSON
{
  "total": 2,
  "succeeded": 2,
  "results": [
    { "id": "ctc_9aZ2bQ", "created": true },
    { "id": "ctc_7bY1cR", "created": true }
  ]
}

Search contacts

GET/public/v1/contacts

Search your contacts. Requires a secret key. Supports these query parameters:

  • q - free-text search across name, email, company.
  • email - exact email match.
  • limit - page size (default and max set by your plan).
  • offset - number of results to skip, for pagination.
Request
curl "https://api.zoye.io/public/v1/contacts?q=northwind&limit=20&offset=0" \
  -H "Authorization: Bearer zk_live_YOUR_KEY"
Response
JSON
{
  "data": [
    { "id": "ctc_9aZ2bQ", "name": "Jordan Rivera", "email": "jordan@northwind.com" }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}

Get a contact by id

GET/public/v1/contacts/:id

Returns the full contact record. Requires a secret key.

curl https://api.zoye.io/public/v1/contacts/ctc_9aZ2bQ \
  -H "Authorization: Bearer zk_live_YOUR_KEY"

Inspect your key

GET/public/v1/whoami

Returns metadata about the key you authenticated with. Handy for confirming a key is wired up and which capabilities it has.

curl
curl https://api.zoye.io/public/v1/whoami \
  -H "Authorization: Bearer zk_live_YOUR_KEY"
Response
JSON
{
  "keyType": "secret",
  "scopes": ["contacts:create", "contacts:read", "contacts:search"],
  "projectId": "prj_4tH8mN",
  "rateLimitTier": "growth"
}

Fields

For the complete list of fields you can send on a contact, their types, and which key types can write each one, see the field reference.

PreviousNo-code embedNextMCP server
Zoye LogoZoye Logo

AI assistant that runs your business workspace

hello@zoye.io
Product
  • AI Assistant
  • Pricing
  • Blog
  • Sync Users Guide
Company
  • About
  • Discord
  • Try Free
Available in
  • English
  • עברית
  • Français
  • Español
  • Русский
  • Magyar
  • हिन्दी
  • Polski
  • Deutsch
  • Português
  • Nederlands
  • Italiano

© 2026 Zoye AI. All rights reserved. Built for the future of work.

Privacy PolicyTerms of Service