recruiter.searchFromUrl

Search from a pasted Recruiter search / talent-pool / applicant URL, nothing else in the body.

Prerequisites

  • A Curviate API key, passed as apiKey when you construct the client. Quickstart shows how to create one.
  • A connected LinkedIn account. This resource is account-scoped: the account_id is injected automatically by the account-scoped accessor, so you pass it once to curviate.account(...) and every call below inherits it. Quickstart covers connecting one, and accounts.list returns the account_id of each account already connected.
  • Requires a Recruiter subscription on the connected LinkedIn account. Without it, calls return LINKEDIN_FEATURE_NOT_SUBSCRIBED (403); activate it on LinkedIn, as reconnecting will not help.

Signature

searchFromUrl(body: RecruiterSearchFromUrlBody, params?: Partial<RecruiterSearchFromUrlQuery>): Promise<RecruiterSearchFromUrlResult>

Example

import { Curviate } from "@curviate/sdk";
 
const curviate = new Curviate({
  apiKey: "cvt_live_...",
  baseUrl: "https://api.curviate.com",
});
 
const result = await curviate.account("acc_YOUR_ACCOUNT_ID").recruiter.searchFromUrl({ url: "YOUR_URL" });
console.log(result);

Parameters

NameTypeRequiredDescription
cursorstringNoOpaque pagination cursor from a previous response. Omit for the first page.
limitnumberNoNumber of results to return (1-5000; the effective cap depends on the URL kind). Defaults to 25.
urlstringYesA pasted Recruiter search, talent-pool, or applicant URL. Content, forwarded verbatim, never persisted.

Returns

Resolves to RecruiterSearchFromUrlResult.

Error codes

CodeWhat it means, and what to do
UNAUTHORIZEDThe API key is missing, malformed, or revoked. Check the key you passed to the client.
INVALID_REQUESTA parameter failed validation. The message names the offending field; fix the request rather than retrying it.
RATE_LIMIT_ACCOUNTThis account's own quota is exhausted. Wait for the window in the Retry-After header, then retry.
RATE_LIMIT_TENANTThe tenant-wide quota is exhausted across all accounts. Slow the whole workload, not just this call.
PLATFORM_RATE_LIMITLinkedIn is throttling this account. Back off well beyond the hinted delay; sustained pressure risks the account.
PLATFORM_ERRORAn upstream failure, usually transient: retry once with backoff before treating it as a real error. Check the response first, though. When it carries retry_likely_to_succeed: false and retry_hint: {kind: "never"}, retrying cannot help and backing off only delays the real answer.
ACCOUNT_NOT_FOUNDNo connected account with that id belongs to this tenant. List your accounts to get a current id.
ACCOUNT_RESTRICTEDLinkedIn has restricted the account, so it cannot act until that is cleared. Retrying will not help.
INTERNALAn unexpected server error. Retry once; if it persists, it is ours, not yours.
LINKEDIN_AUTH_FAILEDLinkedIn rejected the credentials. Confirm them with the account owner.
LINKEDIN_FEATURE_NOT_SUBSCRIBEDThe connected LinkedIn account does not have the subscription this operation needs. Activate it on LinkedIn; reconnecting will not help.
NO_ACTIVE_SEATThe targeted account is not on an active seat. Buy or attach a seat in Billing, then retry.
PAYLOAD_TOO_LARGEThree limits can trigger this. The platform's own ceiling on total request size is the lowest and the one you are most likely to hit: it starts rejecting at roughly 1 MB, so a handful of photo-sized images is refused even though it clears everything below. Above that, this API caps one attachment at 5 MiB of file content and the whole request body at 9 MiB. Attachments travel base64-encoded, which inflates them by about a third, so a 5 MiB file costs roughly 6.7 MiB of the body budget. Send fewer or smaller attachments; retrying unchanged will not help.
RESOURCE_NOT_FOUNDThe id in the path does not exist, or is not visible to this account. Re-read it from the list endpoint that produced it.

Every code above is a stable CurviateError.code you can branch on. The full list, the response envelope, and retry semantics are in the Error codes reference.

Next steps

  • recruiter.listApplicants: List applicants in a project's talent pool (POST-as-list; the body carries filters, no state mutates).
  • recruiter.listJobs: List Recruiter job postings.
  • recruiter.listPipeline: List candidates in a project's pipeline (POST-as-list; the body carries an all-optional filter set, no state mutates).
  • SDK Quick Start: installation, the client, account scoping, and pagination.