A recruiter's desk with a notebook and laptop showing candidate and job records

Crelate API: Recruiting Workflows Carly Can Run

A candidate reply should start the next recruiting action, not become another tab to check. Carly can take it from there. It follows up with the candidate, coordinates the interview, updates the client, checks Crelate for a pipeline going stale, and gives each recruiter a prioritized brief across the ATS, email, calendars, tasks, and Slack.

Crelate’s API is self-serve — no sales call, no partner program — and it has no public webhooks. Their spec says so directly: “The Crelate API does not currently offer webhooks or other push-based change notifications. Polling with modified-date windows is the supported model for change detection.”

Except Crelate clearly does run webhook infrastructure. All six of its Zapier triggers are labelled Instant, which means REST hooks rather than polling. The admin UI even shows you a read-only list of them. You just can’t create one.

That gap — private webhooks powering a partner integration, none exposed to you — is the defining fact about this API.


Recruiting workflows Carly can run

Since Crelate won’t publicly push every change, Carly splits the automation across the inbox, calendar, instant Zapier events, and recurring Crelate checks.

From your email and calendar:

  • Candidate follow-up sequences — the second and third touch after a submittal, which is where most placements are actually saved.
  • Interview confirmations and reminders to both sides, plus the debrief chase afterward.
  • Client check-ins on open roles that have gone quiet.

By checking Crelate on a schedule:

  • Candidates parked in a stage too long, surfaced before the client loses interest.
  • Jobs with no submittals this week, flagged to the recruiter who owns them.
  • Placements approaching their guarantee period, which is worth knowing before it passes.

The thing you cannot get is instant reaction to a stage change — Crelate simply doesn’t offer it publicly, and no tool can conjure an event the platform won’t send. What you can do is check often enough that it doesn’t matter, and act on the email side where speed genuinely counts.

For example:

Every weekday at 7:30am, send each recruiter their five most important actions using candidate replies, upcoming interviews, submissions without client feedback, jobs with no recent activity, and placements approaching guarantee. Link every item to the Crelate record.

Or:

Every 30 minutes, check for candidates whose records or stages changed. Send the appropriate update, notify the recruiter when judgment is needed, and log the communication back to Crelate.


Use the spec, not the help center

This is the connection Carly relies on, so the authentication detail matters.

The authoritative source is Crelate’s public OpenAPI spec, which needs no login:

https://app.crelate.com/api3/docs/v3/crelate-openapi.json

The widely-cited help-center Developer Guide is stale, and in one specific way that matters: it documents authentication as a querystring parameter, ?api_key=. The current spec uses a header:

X-Api-Key: <your key>

Following the help center means putting your key in URLs, where it lands in server logs and referrer headers. That’s a security regression, not a style preference. Also worth knowing: api.crelate.com isn’t the API host, and the old app.crelate.com/api/pub/v1/* lane returns 410 Gone — plenty of live tutorials still point there.

Base URL is https://app.crelate.com/api3. API keys only; no OAuth.

Getting a key, and who owns it

Give Carly a stable, appropriately scoped Crelate user rather than tying the workflow to a recruiter’s temporary personal key. Setup takes two steps because API access is off by default:

  1. An admin enables it — Settings → Advanced Settings → User Roles → Misc → “API Access” → Allowed. Admins always have it regardless.
  2. The user generates it — navigation menu → Your Profile & Preferences → API Access → toggle on. The key generates automatically.

Admins can audit and revoke under Settings → Advanced Settings → API Management.

Keys are per-user, not per-organization. The spec is explicit: “All requests made with this key operate as the associated user and not the organization.” API actions show up in audit logs under that person’s name, and there’s no service-account concept. So when whoever generated the key leaves, your integration leaves with them. Regenerating a key also instantly breaks every integration using the old one.

The plan floor is Business

TierPriceAPI
Essentials$85/user/mo, max 2 usersNot listed
Business$119/user/moYes
Business PlusCustomYes, “full API and integrations”
Enterprise / PlatformCustomYes

Essentials is excluded from Crelate’s feature-comparison matrix entirely and its bullet list omits the API, so the practical floor is Business at $119 per user per month. It’s a milder version of the Recruit CRM trap — no Account-Owner-only restriction, and non-admins can hold keys once the role permits it.

One unresolved contradiction worth knowing: Crelate’s pricing page states 60 requests per minute for Business and Business Plus and 120 for Enterprise, while the spec says “generally 120 requests per minute per IP address.” Both are currently published. Assume 60 on Business until you’ve measured otherwise.

Note that limit is per IP, not per key or tenant — so several integrations running from one server share it. And 429s here don’t use a Retry-After header; the body carries retry_after_seconds as a string.

What you can write, and what you can’t

These boundaries determine which steps Carly completes inside Crelate and which it completes in email, calendar, tasks, or another connected system.

Full CRUD on contacts, companies, jobs, notes, tasks, and activities, with bulk create, update, delete, and status change on contacts. The candidate pipeline is writable too — adding candidates to jobs, moving their status, and driving workflow stage changes.

Crelate has no separate candidate object. Candidates are Contacts linked to Jobs.

The read-mostly parts are where plans break:

  • Placements are GET plus a status PATCH. There is no POST. You cannot create a placement through the API.
  • Applications are GET only, plus approve, block, and reject actions. No create, no general update.
  • Back-office is read-only — invoices, billable items, ledgers, expense types, and time types are all GET (payments do allow POST).

The webhook workaround, and its limits

Since the public API has none, Carly can use Zapier’s instant events where they exist and recurring modified-date checks everywhere else. The other option is a custom Platform contract.

Zapier’s six triggers are instant: new and updated Contact, Company, and Job. That’s it. Two constraints make it thinner than it sounds:

  • The three “Updated” triggers explicitly don’t fire on new activities — so notes, calls, emails, and stage changes don’t trigger them.
  • There are no triggers for placements, applications, or workflow stage changes — precisely the events a staffing agency most wants to react to.

Crelate also auto-disables a webhook after 50 consecutive failures, and re-enabling requires contacting support.

Beyond that, “MCP and Webhooks” appears as an à-la-carte add-on under Platform pricing — the custom-quote tier. No public documentation describes what its webhook feature exposes or what it costs.

For everything else, poll. modified_after is exposed on 40 endpoints, and the spec directs you to filter and sort by modified date rather than walking offsets.

The gotcha that deletes data

A PATCH on Tags is a complete replace across all categories — including categories absent from your payload. A Carly workflow that changes tags should read the full set first and write it back with the intended change. The spec flags this in bold, and it’s the one most likely to cause real data loss.

Every other collection field on the object — emails, phones, websites — merges. Tags don’t. You must GET the full tag set and echo it back with your addition, or you silently delete everything you didn’t mention.

Three more:

  • Required fields are per-tenant and absent from the schema. Crelate deliberately omits required-ness because each organization configures its own. Code that works against one customer’s tenant returns 400s on another’s. Call and cache GET /{entity}/info per tenant, and never share cached metadata between tenants.
  • GET requests take a JSON body for retrieve options, which many HTTP clients and generated SDKs won’t send. Querystring equivalents exist, but supplying the same option in both places returns a 400.
  • Bulk operations return 206 Partial Content with both data and errors populated — and the error entries aren’t positionally correlated with your input array. You parse identifiers out of error messages to work out what failed.

Pagination caps at 100 (default 50), and offsets are unstable under concurrent writes.

Crelate’s AI is real; its MCP isn’t yet

Unusually for recruiting software, these are shipped rather than announced: Co-Pilot (September 2024, around 30 skills — resume summaries, interview questions, job descriptions, email drafting), Discover Agent (GA July 2025, sourcing and enrichment), and Insights Agent (GA October 2025, monthly record refresh with duplicate detection).

Co-Pilot needs Business Plus or above, and the Insights and Data Quality agents are à-la-carte Platform purchases rather than included in Business.

The MCP server is not shipped. Crelate’s own navigation says “MCP Server (Coming Soon).” The only Crelate MCP available today is an unofficial community wrapper — which, incidentally, documents the stale querystring authentication.

How Carly keeps the desk moving

Polling is the supported model here, and that shapes everything. Your automation finds out about a stage change on its next sweep, not when it happens.

Handing that to an AI assistant doesn’t fix it.

Scheduled work is no longer the dividing line — ChatGPT and Claude both run tasks on a timer without anyone watching. The line that still holds is event triggers. Nothing kicks off because something happened in one of your apps; it kicks off because the clock said so, which means anything time-sensitive waits for the next run.

“Summarize this month’s placements by recruiter” is well within what ChatGPT or Claude will do with a Crelate export. “Message the candidate the moment they move to offer stage” is not — and in Crelate’s case the platform itself won’t tell you either, so something has to be watching.

Carly is built for that watching:

  • Polls on modified-date windows and acts on what changed — the honest architecture when a platform ships no public events, and exactly the bookkeeping worth not maintaining by hand
  • Fires on the Zapier triggers where they cover you — contact, company, and job create and update
  • Runs the whole response in one flow — read the record, draft the message, send it, log the activity
  • Actually sends — Gmail and Outlook, with attachments

Because Crelate exposes a public API, you can connect it natively to Carly from the Integrations tab with your Crelate API key. Carly can then use Crelate in on-demand, recurring, and event-triggered workflows. AI agents start at $35/month, and workflow steps that don’t use AI run free.


Frequently Asked Questions

Does Crelate have webhooks?

Not in the public API. Crelate’s spec states plainly that it offers no push-based change notifications and that polling with modified-date windows is the supported model. Zapier’s six Crelate triggers are instant, which means private partner webhooks exist — you just can’t create your own.

Which Crelate plan includes API access?

Business at $119 per user per month is the practical floor. Essentials at $85 is excluded from the feature-comparison matrix and doesn’t list API access. Business Plus and Enterprise are custom-quoted.

How do I authenticate with the Crelate API?

An X-Api-Key header. Crelate’s help-center Developer Guide still documents a ?api_key= querystring parameter — that’s stale, and it leaks your key into logs and referrer headers. The OpenAPI spec is the current source.

Can I create a placement through the Crelate API?

No. Placements support GET and a status PATCH only. Applications are similarly read-only aside from approve, block, and reject actions.

Why did updating tags in Crelate delete other tags?

A PATCH on Tags replaces the entire tag set across all categories, including ones not in your payload. Unlike emails or phones, tags don’t merge. Fetch the full set first and send it back with your changes included.


More: Best AI workflow automation tools · AI agents for HR and people ops · Best AI agents for productivity

Ready to automate your busywork?

Carly schedules, researches, and briefs you—so you can focus on what matters.

See what people say

"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.

Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.

On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

Gus Ibrahim, Founder & Director, IHR