ATS
SmartRecruiters
API integration
Ship ATS features without building the integration. Full SmartRecruiters API access via Proxy, normalized data through Unified APIs, and 40+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with SmartRecruiters
Common scenarios for SaaS companies building SmartRecruiters integrations for their customers.
Automate candidate sourcing into SmartRecruiters
AI sourcing tools can pull open Jobs from a customer's SmartRecruiters account and push matched passive candidates back as new Candidates with Applications, preserving source attribution for recruiter visibility.
Trigger assessments when candidates reach a hiring stage
Skills testing and assessment platforms can monitor Application status changes in SmartRecruiters to automatically send evaluations, then write results and report Attachments back to the candidate's application record.
Pre-fill onboarding and payroll from hired candidates
EOR, payroll, and onboarding platforms can detect when an Application moves to 'Hired' status and extract Candidate profiles, Job compensation data, and resume Attachments to eliminate manual data re-entry.
Sync interviewer panels for scheduling automation
Interview scheduling tools can ingest SmartRecruiters Users, Roles, and Groups to map interviewers to calendars and build multi-panel schedules tied to specific Applications and Jobs.
Power recruitment analytics across multi-ATS customers
Analytics and BI platforms can normalize SmartRecruiters data alongside other ATS sources using Truto's Unified ATS API to give talent leaders a single view of pipeline velocity, source effectiveness, and hiring metrics.
What You Can Build
Ship these features with Truto + SmartRecruiters
Concrete product features your team can ship faster by leveraging Truto’s SmartRecruiters integration instead of building from scratch.
Real-time application stage sync
Listen for Application status updates in SmartRecruiters and trigger downstream workflows in your product the moment a candidate moves through hiring stages.
Bi-directional candidate profile sync
Pull Candidate data from SmartRecruiters into your app and push enriched or updated profile information back, keeping both systems in lockstep.
Automated assessment report upload
Upload PDF reports, scorecards, or compliance documents as Attachments directly onto a candidate's Application record so hiring managers review results without leaving SmartRecruiters.
Job requisition ingestion engine
Continuously sync open Jobs—including department, location, and compensation bands—into your product to power job matching, distribution, or workforce planning features.
Interviewer and hiring team directory sync
Import SmartRecruiters Users, Roles, and Groups via the Unified User Directory API to map hiring panels, enforce permissions, or route approvals inside your app.
One-click candidate import with source tracking
Let your users push sourced or screened candidates into SmartRecruiters as new Candidates with Applications, automatically tagging your product as the originating source.
SuperAI
SmartRecruiters AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_smart_recruiters_jobs
Search SmartRecruiters jobs by title keyword, city, department, status, posting status, hiring team member, or update time. Returns: id, title, refNumber, createdOn, updatedOn, lastActivityOn, department, location, status, postingStatus, language, actions, type, category, name, label, records. Max 100 per page.
get_single_smart_recruiters_job_by_id
Get a single SmartRecruiters job by id. Returns: id, title, refNumber, createdOn, updatedOn, lastActivityOn, department, location, status, postingStatus, targetHiringDate, hiringProcessId, industry, function, typeOfEmployment, experienceLevel, eeoCategory, template, creator, compensation, jobAd, properties, actions, totalFound, content. Required: id.
smart_recruiters_jobs_approval
Get the latest approval request for a SmartRecruiters job. Returns: positions. Required: job_id. The job must have an existing approval request.
smart_recruiters_jobs_hiring_team
Get the hiring team of a SmartRecruiters job. Returns member records including id, type, category, name, label, and nested records of field values. Required: job_id.
smart_recruiters_jobs_job_ads
List the job ads of a SmartRecruiters job. Returns: id, title, language, location, compensation, jobAd, createdOn, updatedOn, applyUrl, postingStatus, actions, creator, visibility, totalFound, content. Required: job_id.
smart_recruiters_jobs_job_ad_postings
List publications for a job ad in SmartRecruiters. Returns each publication record with its id, type, category, name, label, and records. Required: job_id, job_ad_id.
smart_recruiters_jobs_positions
List positions for a job in SmartRecruiters. Returns each position record with its id, type, category, name, label, and records. Required: job_id.
smart_recruiters_jobs_status_history
Get the status change history for a job in SmartRecruiters. Returns each history record with its id, type, category, name, label, and records. Required: job_id.
list_all_smart_recruiters_candidates
List SmartRecruiters candidates that have at least one job application, searchable by keyword and filterable by job, location, status, tags, and screening questions. Returns candidate records with id, firstName, lastName, email, and updatedOn. Max 100 per page.
get_single_smart_recruiters_candidate_by_id
Get the full details of a SmartRecruiters candidate by id. Returns the candidate record including id, firstName, lastName, email, and updatedOn. Required: id.
smart_recruiters_candidates_list_attachments
List a SmartRecruiters candidate's attachments in the context of a specific job. Returns attachment records with id and attachmentType. Required: candidate_id and job_id.
smart_recruiters_candidates_download_attachment
Download a SmartRecruiters candidate's attachment file by id. Returns the raw attachment file content (binary), not a JSON object. Required: attachment_id.
smart_recruiters_candidates_get_application
Get details of a SmartRecruiters candidate's application to a specific job. Returns the application with id, status, and subStatus. Required: candidate_id and job_id.
smart_recruiters_candidates_update_status
Update a candidate's status for a specific job assignment in SmartRecruiters. Sends a status update payload and returns an empty 204 response on success. Requires candidate_id and job_id; moving a candidate to REJECTED or WITHDRAWN can require a valid reason, and a required sub-status cannot be skipped (NO_REASON_SUPPORT_FOR_STATUS, REASON_NOT_FOUND, REQUIRED_SUB_STATUS_OMITTED validation).
smart_recruiters_candidates_consent
Get a candidate's latest consent status in SmartRecruiters. Returns the latest consent status object in data; the discovered docs reference the CandidateConsentStatus schema without expanding its fields. Required: candidate_id.
smart_recruiters_candidates_consents
Get a candidate's consent decisions in SmartRecruiters. Returns the consent decisions object in data — one decision for 'single consent' accounts or per-data-scope decisions (such as SmartRecruit and SmartCRM) for 'separated consent' accounts; the discovered docs reference the CandidateConsentDecisions schema without expanding its fields. Required: candidate_id.
smart_recruiters_candidates_job_status_history
Get a candidate's status history for a specific job in SmartRecruiters. Returns the status-history list payload in data; the discovered docs reference the CandidateStatusHistoryList schema without expanding its fields. Required: candidate_id and job_id.
smart_recruiters_candidates_job_properties
Get a candidate's property values for a specific job in SmartRecruiters. Returns the property-values object in data, which is empty ({}) when no value is set for a property; the discovered docs reference the CandidateProperties schema without expanding its fields. Required: candidate_id and job_id.
smart_recruiters_candidates_screening_answers
Get the screening question answers a candidate submitted for a specific job in SmartRecruiters. Returns each answer with its id, type, category, name, label, and records of answered field values; returns an empty array when there are no screening answers for the candidate's job. Required: candidate_id, job_id.
smart_recruiters_candidates_job_offers
Get the offers extended to a candidate for a specific job in SmartRecruiters. Returns a paginated collection with limit, nextPageId, totalFound, and content holding the candidate's offer records. Required: job_id.
list_all_smart_recruiters_company
Get company information. Returns: identifier, name, location, website, industry, logo, spamStatus.
list_all_smart_recruiters_departments
List SmartRecruiters departments. Returns the department list with each department's id and label.
list_all_smart_recruiters_interviews
List interviews for a SmartRecruiters application. Returns the collection of interviews; each interview includes its id. Required: applicationId.
list_all_smart_recruiters_job_publications
List publications for a job in SmartRecruiters. Returns publication records including id. Only active publications are returned by default; pass activeOnly=false to include inactive ones. Required: job_id.
list_all_smart_recruiters_messages
List messages for a candidate in smartrecruiters. Returns the fetched messages view including message content. Required: candidateId. Accessible only to users with the ADMINISTRATOR role.
list_all_smart_recruiters_offers
Search SmartRecruiters offers. Returns the matching offer collection (content) plus the total number of results (totalFound). All filters are optional; if age is supplied, createdAfter and createdBefore are ignored.
list_all_smart_recruiters_reviews
List all SmartRecruiters reviews for a specified candidate and job pairing. Returns the matching review records for that application, each identified by its id. Required: candidateId, jobId. The candidate and job must correspond to an existing application.
list_all_smart_recruiters_users
List users of your SmartRecruiters company. Returns user records with id, firstName, lastName, email, active, systemRole, updatedOn, language, and ssoLoginMode. Max 100 per page.
smart_recruiters_users_access_groups
List access groups configured in your SmartRecruiters company. Returns access-group records with: id, name.
smart_recruiters_users_system_roles
List system roles available in your SmartRecruiters company. Returns system-role records with: id.
get_single_smart_recruiters_user_by_id
Get a single SmartRecruiters user by id. Returns the full user object including id, firstName, lastName, email, active, systemRole, updatedOn, language, and ssoLoginMode. Required: id.
create_a_smart_recruiters_user
Create a new user in SmartRecruiters. Returns the created user object including id, firstName, lastName, email, active, systemRole, updatedOn, language, and ssoLoginMode. Required: firstName, lastName, systemRole.
list_all_smart_recruiters_candidate_properties
List all candidate properties and their configuration for a SmartRecruiters company. Returns each property's id, type, category, name, label, and records with selectable field values. MULTI_SELECT properties are available only to a limited set of customers under early access. No required parameters.
list_all_smart_recruiters_candidate_property_values
List all available values for a candidate property in SmartRecruiters. Returns value records with id, label, category, name, and records. Required: candidate_property.id. Only selection-type properties (SINGLE_SELECT, MULTI_SELECT) are supported.
list_all_smart_recruiters_hiring_processes
List the hiring processes configured in SmartRecruiters. Returns the collection of hiring process records, each including its id.
list_all_smart_recruiters_job_properties
List the job properties configured in smartrecruiters. Returns job property definition records with id, name, label, type, category, and the records of available values with their fields.
list_all_smart_recruiters_job_property_dependents
List the job properties configured as dependents of a given job property in SmartRecruiters. Returns each dependent job property's id, name, label, category, and type. Required: job_property.id (the job property's id or key).
list_all_smart_recruiters_job_property_values
List the available values configured for a SmartRecruiters job property. Returns each value's id, label, type, name, and category. Required: job_property_id (the job property's id or key).
list_all_smart_recruiters_job_property_dependent_values
List the dependent job property values configured for a specific value of a job property in SmartRecruiters. Returns: id, label, externalCode, category, name, records. Required: job_property_id, value, dependent_id — the job property and dependent parameters accept an id or key.
list_all_smart_recruiters_offer_properties
List the available offer properties configured in SmartRecruiters. Returns the offer property definitions grouped into categories, with each record exposing its id and property-definition attributes.
list_all_smart_recruiters_reject_reasons
List the rejection reasons configured in SmartRecruiters for the company. Returns the collection of rejection reason definitions as the payload; the vendor documents the record shape with a generic schema, so individual reason fields are not enumerated. Takes no required parameters.
list_all_smart_recruiters_sources
List all available candidate source types with their subtypes in SmartRecruiters. Returns each source type record with its id and type-specific attributes covering the source type and its subtypes.
list_all_smart_recruiters_candidate_sources
List SmartRecruiters candidate source values for a given source type. Returns source records identified by id. Required: source_type. Max 100 per page.
list_all_smart_recruiters_withdrawal_reasons
List the withdrawal reasons configured in the SmartRecruiters account. Returns each reason's id plus vendor-defined attributes; the attribute shape follows SmartRecruiters' Properties schema and is not enumerated in the public docs.
list_all_smart_recruiters_interview_types
List the interview types configured in smartrecruiters. Returns the interview types collection (types), with each type identified by its name; the account can hold up to 2000 types. Takes no parameters.
get_single_smart_recruiters_job_application_by_id
Get a single job application in SmartRecruiters by id. Returns the JobApplication record: its id plus job-application-specific fields under attributes. Required: id.
list_all_smart_recruiters_job_postings
List active SmartRecruiters job postings published by a given company. Returns posting records with id, applyUrl, and location (country, region, city). Required: company_id. Max 100 per page.
get_single_smart_recruiters_job_posting_by_id
Get a single SmartRecruiters job posting by posting id or uuid for a given company. Returns: id, uuid, name, jobId, jobAdId, defaultJobAd, applyUrl, postingUrl, referralUrl, refNumber, company, releasedDate, location, industry, department, function, typeOfEmployment, experienceLevel, customField, ref, creator, jobAd, active, visibility, compensation, totalFound, content. Required: company_id, id.
list_all_smart_recruiters_me
Get details of the authenticated SmartRecruiters user (my user). Returns the user entity: id, firstName, lastName, email, active, systemRole, language, ssoLoginMode, updatedOn. Takes no additional parameters — the returned user is determined by the API credential used.
Why Truto
Why use Truto’s MCP server for SmartRecruiters
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for SmartRecruiters
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified User Directory API
Unified ATS API
How It Works
From zero to integrated
Go live with SmartRecruiters in under an hour. No boilerplate, no maintenance burden.
Link your customer’s SmartRecruiters account
Use Truto’s frontend SDK to connect your customer’s SmartRecruiters account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call SmartRecruiters
Truto’s Proxy API is a 1-to-1 mapping of the SmartRecruiters API. You call us, we call SmartRecruiters, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate SmartRecruiters’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about SmartRecruiters on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does SmartRecruiters use?
SmartRecruiters uses OAuth 2.0 for API authentication. Truto handles the full OAuth flow, token refresh, and credential storage so your end users can connect their accounts without your team managing auth infrastructure.
Which Unified APIs does Truto support for SmartRecruiters?
Truto maps SmartRecruiters to the Unified ATS API (Applications, Attachments, Candidates, Jobs) and the Unified User Directory API (Groups, Roles, Users). Additional tools or custom resources can be built on request.
Does SmartRecruiters support webhooks for real-time data sync?
Yes. SmartRecruiters provides extensive webhook subscriptions for events like candidate.created and application.status.updated, enabling real-time triggers without aggressive polling.
Can I read and write custom fields on SmartRecruiters objects?
SmartRecruiters supports custom fields on Candidates, Jobs, and Applications through its API. Truto can surface these via its integration layer. Contact the Truto team to discuss specific custom field mapping requirements.
Are there rate limits on the SmartRecruiters API?
Yes, SmartRecruiters enforces API rate limits that vary by endpoint and customer plan. Truto handles rate limit detection, backoff, and retry logic automatically so your integration stays resilient without manual throttling.
What if I need an endpoint or data model that isn't covered by the current Unified APIs?
Truto builds additional tools and custom resources on request. If you need access to SmartRecruiters data beyond the current Unified ATS and User Directory models—such as offer details, interview feedback, or GDPR consent fields—reach out and the team can scope it.
From the Blog
SmartRecruiters integration guides
Deep dives, architecture guides, and practical tutorials for building SmartRecruiters integrations.
SmartRecruiters
Get SmartRecruiters integrated into your app
Our team understands what it takes to make a SmartRecruiters integration successful. A short, crisp 30 minute call with folks who understand the problem.