Stitchflow
LinkedIn Recruiter logo

LinkedIn Recruiter User Management API Guide

API workflow

How to automate user lifecycle operations through APIs with caveats that matter in production.

UpdatedMar 11, 2026

Summary and recommendation

LinkedIn Recruiter exposes no user-management API. There is no endpoint for seat provisioning, role assignment, or deprovisioning - these operations are admin-UI-only. The only programmatic surface available is the Recruiter System Connect (RSC) API, which is an ATS integration layer covering jobs, candidates, and applications, not recruiter seat CRUD.

RSC access requires a formal LinkedIn Talent Solutions partnership application and approval. It is not self-serve, and all RSC endpoints return HTTP 403 without an approved partner contract. OAuth 2.0 uses a 3-legged authorization code flow; there is no documented service-account or client credentials flow for RSC.

For teams building identity graph integrations - mapping recruiter identities across HR systems, ATS platforms, and IdPs - LinkedIn Recruiter is a terminal node. It receives SSO assertions for authentication but emits no provisioning events and has no SCIM endpoint to sync against.

Any identity graph that expects bidirectional lifecycle signals from LinkedIn Recruiter will need a manual reconciliation layer.

API quick reference

Has user APINo
Auth methodOAuth 2.0 (3-legged for RSC partner integrations)
Base URLOfficial docs
SCIM availableNo
SCIM plan requiredEnterprise

Authentication

Auth method: OAuth 2.0 (3-legged for RSC partner integrations)

Setup steps

  1. Apply for LinkedIn Recruiter System Connect (RSC) partner access via LinkedIn Talent Solutions partnership program.
  2. Once approved, register your application in the LinkedIn Developer Portal (developer.linkedin.com) and obtain a client_id and client_secret.
  3. Implement the OAuth 2.0 3-legged authorization code flow; redirect users to https://www.linkedin.com/oauth/v2/authorization with required scopes.
  4. Exchange the authorization code for an access token at https://www.linkedin.com/oauth/v2/accessToken.
  5. Use the access token as a Bearer token in the Authorization header for all RSC API calls.

Required scopes

Scope Description Required for
r_liteprofile Read basic profile data for authenticated LinkedIn members. Identifying the authenticated recruiter user context.
r_recruiter_system_connect Access RSC-specific endpoints for ATS integration (jobs, candidates, contracts). All Recruiter System Connect API operations.

User object / data model

User object field mapping is not yet verified for this app.

Core endpoints

Get RSC Contract (verify integration)

  • Method: GET
  • URL: https://api.linkedin.com/v2/recruiterContracts
  • Watch out for: Only accessible to approved RSC partners. Returns contracts associated with the authenticated recruiter's organization.

Request example

GET /v2/recruiterContracts
Authorization: Bearer {access_token}

Response example

{
  "elements": [
    {"contractId": "123456", "name": "Acme Corp RSC"}
  ]
}

Get Job Postings

  • Method: GET
  • URL: https://api.linkedin.com/v2/jobPostings
  • Watch out for: Requires contractId scoped to the RSC partner agreement. Not a general LinkedIn Jobs API.

Request example

GET /v2/jobPostings?q=recruiterJobs&contractId=123456
Authorization: Bearer {access_token}

Response example

{
  "elements": [
    {"id": "job_001", "title": "Software Engineer", "state": "LISTED"}
  ],
  "paging": {"start": 0, "count": 10, "total": 42}
}

Get Candidate Profile (RSC)

  • Method: GET
  • URL: https://api.linkedin.com/v2/candidates/{candidateId}
  • Watch out for: Candidate data access is gated by RSC partnership and the candidate's consent. Profile fields returned are limited compared to full member profile.

Request example

GET /v2/candidates/urn:li:candidate:789
Authorization: Bearer {access_token}

Response example

{
  "id": "urn:li:candidate:789",
  "firstName": "Jane",
  "lastName": "Doe",
  "applicationStatus": "APPLIED"
}

Rate limits, pagination, and events

  • Rate limits: LinkedIn enforces application-level and member-level throttling on all API endpoints. RSC API limits are defined per approved partner contract and are not publicly documented in detail.
  • Rate-limit headers: Yes
  • Retry-After header: No
  • Rate-limit notes: LinkedIn returns HTTP 429 when throttled. The X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers are present on responses. Exact numeric limits for RSC are not publicly disclosed.
  • Pagination method: offset
  • Default page size: 10
  • Max page size: 50
  • Pagination pointer: start / count
Plan Limit Concurrent
RSC Partner (approved) Defined per partner agreement; LinkedIn documentation references daily call limits per application and per member token. 0
  • Webhooks available: No
  • Webhook notes: LinkedIn Recruiter does not offer a publicly documented webhook system for user or seat management events. RSC API provides some event-based callbacks for ATS integrations (e.g., application status changes) but these are limited to approved RSC partners and are not general-purpose webhooks.
  • Alternative event strategy: RSC partners can poll RSC API endpoints for status changes. LinkedIn Talent Hub and some ATS integrations use RSC event notifications under the partner agreement.

SCIM API status

  • SCIM available: No
  • SCIM version: Not documented
  • Plan required: Enterprise
  • Endpoint: Not documented

Limitations:

  • LinkedIn Recruiter does not support SCIM 2.0 provisioning as of the current documentation review.
  • Seat assignment and user management must be performed manually through the LinkedIn Recruiter admin UI.
  • SSO (SAML 2.0) is supported for authentication but does not extend to automated provisioning or deprovisioning.
  • No IdP connectors (Okta, Entra ID, Google Workspace, OneLogin) are officially supported for SCIM with LinkedIn Recruiter.

Common scenarios

The primary legitimate API use case is ATS integration via RSC: syncing job postings from LinkedIn Recruiter into an ATS and writing application status changes back.

The flow requires completing RSC partner onboarding, implementing the 3-legged OAuth flow with a recruiter admin authorizing the integration, retrieving the contractId from GET /v2/recruiterContracts, and then fetching job postings scoped to that contract.

Bidirectional candidate data sync uses RSC candidate endpoints under the same partner agreement.

SSO configuration is a separate administrative workflow, not an API integration. It requires coordinating with a LinkedIn account manager to obtain SAML SP metadata, configuring the IdP, and mapping user attributes by LinkedIn member email. SSO handles authentication only - a user who authenticates successfully but holds no assigned Recruiter seat is denied access to Recruiter features. There is no JIT provisioning.

Seat provisioning has no API scenario. It is manual-only: Contract Admin logs in, navigates to Manage Seats, invites by email, sets role, and confirms. Bulk changes are not supported via API; the admin UI may support CSV import for some operations, but no programmatic path exists.

ATS Integration: Sync Job Postings from LinkedIn Recruiter to ATS

  1. Complete RSC partner onboarding with LinkedIn Talent Solutions.
  2. Implement OAuth 2.0 3-legged flow so a recruiter admin authorizes the ATS integration.
  3. Call GET /v2/recruiterContracts to retrieve the contractId for the organization.
  4. Call GET /v2/jobPostings?q=recruiterJobs&contractId={contractId} to fetch active job postings.
  5. Store job IDs and sync application data bidirectionally using RSC candidate endpoints.

Watch out for: RSC partnership approval can take weeks. Without an approved partner contract, all RSC endpoints return 403 Forbidden.

Manual Seat Provisioning (No API Available)

  1. Log in to LinkedIn Recruiter as a Contract Admin.
  2. Navigate to Admin Settings > Manage Seats.
  3. Invite users by LinkedIn email address to assign a Recruiter seat.
  4. Set role (Recruiter, Hiring Manager, Viewer) via the UI.
  5. For deprovisioning, remove the seat from the same admin panel.

Watch out for: There is no API or SCIM endpoint to automate this. Bulk seat changes must be done via CSV import in the admin UI or manually one-by-one.

SSO Configuration for LinkedIn Recruiter

  1. Contact your LinkedIn account manager to enable SSO for your Recruiter contract.
  2. Obtain the LinkedIn Recruiter SAML metadata from your account manager.
  3. Configure your IdP (e.g., Okta, Entra ID) with the LinkedIn Recruiter SAML SP metadata.
  4. Map IdP user attributes to LinkedIn member email for authentication.
  5. Test SSO login; note that SSO only handles authentication-seat provisioning remains manual.

Watch out for: SSO does not trigger automatic seat assignment (no SCIM). A user who authenticates via SSO but has no assigned Recruiter seat will be denied access to Recruiter features.

Why building this yourself is a trap

The most significant integration trap is conflating RSC with a user-management API. RSC is scoped to ATS workflows - jobs and candidates - and has no seat or role endpoints.

Developers who discover the RSC documentation and assume it covers recruiter lifecycle management will invest in a partnership approval process that does not solve the provisioning problem.

Rate limits for RSC are contractually defined per partner agreement and are not publicly disclosed. HTTP 429 responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, but no Retry-After header is documented. Pagination uses offset-based start/count parameters with a maximum page size of 50.

LinkedIn's newer APIs require a date-versioned LinkedIn-Version header (e.g., 202304); RSC endpoints may require this header and omitting it can produce unexpected responses.

Candidate data returned via RSC is subject to LinkedIn's data usage policies and cannot be stored indefinitely - a constraint that affects any pipeline attempting to cache or replicate LinkedIn profile data outside the platform.

OAuth tokens are scoped to the authorizing recruiter; there is no machine-to-machine flow, which means token lifecycle management is tied to individual user accounts and creates a dependency risk if the authorizing user's seat is removed.

Automate LinkedIn Recruiter workflows without one-off scripts

Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.

Every app coverage, including apps without APIs
60+ app integrations plus browser automation for apps without APIs
IT graph reconciliation across apps and your IdP
Less than a week to launch, maintained as APIs and admin consoles change
SOC 2 Type II. ~2 hours of your team's time

UpdatedMar 11, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

6sense logo

6sense

Manual Only
AutomationNot Supported
Last updatedFeb 2026

6sense user management lives entirely in Settings > User Management (https://analytics.6sense.com/settings/user-management). The platform uses a role-based access control model scoped per product module — ABM, Sales Intelligence (SI), and Conversationa

Alkami logo

Alkami

Manual Only
AutomationNot Supported
Last updatedMar 2026

Alkami is an enterprise-only digital banking platform sold exclusively to financial institutions such as banks and credit unions. It is not a general-purpose SaaS tool, and its admin and user-management documentation is not publicly available. Independ

AmazingHiring logo

AmazingHiring

Manual Only
AutomationNot Supported
Last updatedMar 2026

AmazingHiring is a recruiter-facing sourcing platform sold on a pay-per-seat, annual billing model. There is no native SCIM support and no publicly documented IdP integration, which means every app lifecycle event — onboarding, role change, offboarding