---
title: Pinpoint API Integration on Truto
slug: pinpoint
category: ATS
canonical: "https://truto.one/integrations/detail/pinpoint/"
---

# Pinpoint API Integration on Truto



**Category:** ATS  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Users** — The User object represents a User.

### Unified ATS API

- **Applications** — The applications represent an application for a job.
- **Candidates** — The candidates represent a candidate.
- **Departments** — The departments represent a department.
- **Interviews** — The interviews represent an interview.
- **Jobs** — The jobs represent a job.
- **Offices** — The offices represent an office.
- **Users** — The users represent a user.

## MCP-ready AI tools

Truto exposes 89 tools for Pinpoint that AI agents can call directly.

- **list_all_pinpoint_users** — List users in Pinpoint. Returns id, created_at, email, first_name, last_name, time_zone, and updated_at fields for each user in the response.
- **get_single_pinpoint_user_by_id** — Get details for a specific user in Pinpoint. Requires id. Returns fields such as id, created_at, email, first_name, last_name, time_zone, and updated_at in the response.
- **delete_a_pinpoint_user_by_id** — Delete a user in Pinpoint. Requires id. Returns meta information about the deletion in the response.
- **create_a_pinpoint_user** — Create a user in Pinpoint. Requires first_name, last_name, email, and user_type. Returns user id, type, created_at, updated_at, email, first_name, last_name, and time_zone in the response.
- **list_all_pinpoint_access_groups** — List all access groups in Pinpoint. Returns id, type, created_at, description, create_as_referral, name, number_of_roles, updated_at, wizard_enabled, wizard_requirements, and roles relationships in the response.
- **get_single_pinpoint_access_group_by_id** — Get details for a specific access group in Pinpoint using id. Returns id, type, attributes (created_at, description, create_as_referral, name, number_of_roles, updated_at, wizard_enabled, wizard_requirements), and relationships (roles).
- **get_single_pinpoint_answer_by_id** — Get an answer in Pinpoint by id. Returns fields such as id, title, additional_information, boolean_answer, number_answer, question_type, date_answer, url_answer, multiple_choice_answer, created_at, updated_at, relationships, and more.
- **create_a_pinpoint_answer** — Create an answer in Pinpoint. Requires answerable and question relationships, plus required attributes depending on question type. Returns id, attributes such as title, boolean_answer, number_answer, text_answer, date_answer, url_answer, date_from_answer, date_to_answer, multiple_choice_answer, document_answer, attachments, question_type, and created_at/updated_at.
- **update_a_pinpoint_answer_by_id** — Update an answer in Pinpoint by id. The fields returned in the response include id, type, attributes (such as title, boolean_answer, number_answer, date_answer, url_answer, text_answer, created_at, updated_at), and relationships. answerable and question cannot be updated via this endpoint.
- **delete_a_pinpoint_answer_by_id** — Delete an answer in Pinpoint by id. Returns meta-information in the response.
- **list_all_pinpoint_applications** — List applications in Pinpoint. Returns id, type, attributes (such as created_at, candidate_id, hired_at, internal_candidate, job_id, stage_id, contact details, and more), and relationships (job, stage, candidate, offers, etc.). Confidential jobs are excluded unless 'confidential' is included in the filter[job_visibility] parameter.
- **get_single_pinpoint_application_by_id** — Get application details in Pinpoint using id. Returns fields such as created_at, updated_at, candidate_id, job_id, full_name, status dates, tags, and related resources in response. Confidential jobs are excluded by default.
- **create_a_pinpoint_application** — Create an application in Pinpoint. Requires first_name, last_name, email, and job relationship. Returns id, candidate_id, job_id, stage_id, and created_at fields in the response.
- **update_a_pinpoint_application_by_id** — Update an existing application in Pinpoint using its id. Returns updated fields such as first_name, last_name, email, phone, date_of_birth, linkedin_url, locale, and relationships like stage and candidate. Summary, résumé, job, and answers cannot be modified.
- **delete_a_pinpoint_application_by_id** — Delete an existing application in Pinpoint using the required id. Returns meta information confirming the deletion in the response.
- **list_all_pinpoint_candidates** — List candidates in Pinpoint. Returns id, address1, address2, country, date_of_birth, email, first_name, full_name, last_name, middle_name, locale, phone, phone_iso2, postcode, town, created_at, updated_at, and relationships in the response.
- **get_single_pinpoint_candidate_by_id** — Get a specific candidate in Pinpoint by id. Returns candidate fields including id, full_name, email, address, date_of_birth, created_at, updated_at, and key relationships such as applications and skills.
- **update_a_pinpoint_candidate_by_id** — Update a candidate in Pinpoint using id. Allows adding or updating custom_attributes and attaching documents via documents_base64. Returns candidate details including address, email, name, and related applications, skills, and custom_attributes.
- **list_all_pinpoint_departments** — List departments in Pinpoint. Returns a list of departments with key fields: id, name, created_at, updated_at in the response.
- **get_single_pinpoint_department_by_id** — Get information about a specific department in Pinpoint using id. Returns id, type, and attributes including created_at, name, and updated_at.
- **create_a_pinpoint_department** — Create a new department in Pinpoint. Requires name. Returns id, name, created_at, and updated_at in the response.
- **update_a_pinpoint_department_by_id** — Update a department in Pinpoint using id. Returns department details with fields id, name, created_at, and updated_at.
- **delete_a_pinpoint_department_by_id** — Delete a specific department in Pinpoint using id. Returns meta object containing non-standard metadata about the operation result.
- **list_all_pinpoint_interviews** — List interviews in Pinpoint. Returns for each interview: id, start_at, end_at, interviewable_id, interviewable_type, created_at, updated_at, status, summary, presence, and their relationships.
- **get_single_pinpoint_interview_by_id** — Get interview details in Pinpoint. Requires id. Returns fields such as id, start_at, end_at, interviewable_id, interviewable_type, created_at, updated_at, status, summary, presence, and related resource objects in response.
- **update_a_pinpoint_interview_by_id** — Update an existing interview in Pinpoint by id. Only the summary field can be updated and must be in HTML format using specific allowed elements. Returns interview details including start_at, end_at, status, and summary.
- **list_all_pinpoint_jobs** — List jobs in Pinpoint. Returns id, type, attributes (such as title, description, compensation, status), and relationships fields for each job. Confidential jobs are excluded by default unless 'confidential' is specified in filter[visibility].
- **get_single_pinpoint_job_by_id** — Get details about a specific job in Pinpoint using id. Returns key job fields such as title, description, compensation, status, required candidate information, responsibilities, benefits, and relationships.
- **create_a_pinpoint_job** — Create a new job in Pinpoint. Requires title, status, selected_hiring_workflow_id, and structure_link. Returns job id, title, status, visibility, employment_type, and created_at in the response.
- **update_a_pinpoint_job_by_id** — Update a specific job in Pinpoint using job id. Returns job attributes including title, description, employment_type, compensation details, and relationships such as department, division, and location.
- **delete_a_pinpoint_job_by_id** — Delete a specific job in Pinpoint. Requires id. Returns meta object in the response with non-standard meta-information about the deletion result.
- **list_all_pinpoint_job_seekers** — List job seekers in Pinpoint. Returns id, candidate_id, first_name, last_name, full_name, email, phone, date_of_birth, summary, created_at, updated_at, locale, channel, channel_source, pipeline_source, address1, address2, town, country, postcode, and key relationships in the response.
- **get_single_pinpoint_job_seeker_by_id** — Get a specific job-seekers resource in Pinpoint using id. Returns job seeker fields such as candidate_id, first_name, last_name, email, phone, summary, created_at, as well as relationships to answers, candidate, comments, custom_attributes, and structured_section_responses.
- **list_all_pinpoint_requisitions** — List requisitions in Pinpoint. Returns an array with fields such as id, name, requisition_template_id, identifier, job_id, creator_id, status, created_at, and updated_at in the response.
- **get_single_pinpoint_requisition_by_id** — Get requisition details in Pinpoint by id. Returns fields such as id, requisition_template_id, name, identifier, job_id, creator_id, status, created_at, updated_at, and relationship data in the response.
- **create_a_pinpoint_requisition** — Create a new requisition in Pinpoint. Requires a relationship to requisition_template. Returns id, name, identifier, status, creator_id, requisition_template_id, and timestamps. Created requisitions are auto-approved and cannot extend job headcount.
- **update_a_pinpoint_requisition_by_id** — Archive a specific requisition in Pinpoint. Requires id. Archives requisition by setting 'archive': true. Returns requisition details including id, name, identifier, status, creator_id, and timestamps.
- **delete_a_pinpoint_requisition_by_id** — Delete a specific requisition in Pinpoint by id. Returns a meta object confirming the deletion. Requires id.
- **list_all_pinpoint_positions** — List positions in Pinpoint. Returns id, type, attributes such as archived_at, discarded_at, identifier, name, parent_position_id, created_at, updated_at, and related relationships like position_openings, current_position_opening, child_positions, parent_position, and custom_attributes for each position.
- **get_single_pinpoint_position_by_id** — Get information about a specific position in Pinpoint. Requires id. Returns fields such as archived_at, discarded_at, identifier, name, parent_position_id, created_at, updated_at, and key relationships.
- **list_all_pinpoint_locations** — List locations in Pinpoint. Returns id, type, attributes (city, country_code, created_at, name, postal_code, province, street_address, updated_at), and relationships for each location in the response.
- **get_single_pinpoint_location_by_id** — Get location in Pinpoint by id. Returns id, type, attributes (city, country_code, created_at, name, postal_code, province, street_address, updated_at), and relationships (equality_monitoring_template) in the response.
- **create_a_pinpoint_location** — Create a new location in Pinpoint. Requires name and country_code. Returns id, name, country_code, city, province, postal_code, street_address, created_at, and updated_at in the response.
- **update_a_pinpoint_location_by_id** — Update a specific location in Pinpoint using id. Returns location fields including city, country_code, name, postal_code, province, street_address, created_at, and updated_at.
- **delete_a_pinpoint_location_by_id** — Delete a specific location in Pinpoint using id. Returns meta information confirming the deletion.
- **list_all_pinpoint_divisions** — List divisions in Pinpoint. Returns id, type, and attributes (created_at, name, updated_at) for each division in the response.
- **get_single_pinpoint_division_by_id** — Get a specific division in Pinpoint by id. Returns id, type, created_at, name, and updated_at fields in the response.
- **create_a_pinpoint_division** — Create a new division in Pinpoint. Returns id, type, and attributes including name, created_at, and updated_at in the response.
- **update_a_pinpoint_division_by_id** — Update a specific division in Pinpoint. Requires id. Returns division fields including id, name, created_at, and updated_at for tracking and identification.
- **delete_a_pinpoint_division_by_id** — Delete a specific division in Pinpoint using id. Requires a valid id. Returns meta information confirming the deletion status in the response.
- **list_all_pinpoint_scorecards** — List scorecards in Pinpoint. Returns id, name, interview_guidance, is_active, scorecardable_id, scorecardable_type, updated_at, created_at, and relationships: scorecard_notes, scorecard_sections, stages for each scorecard.
- **get_single_pinpoint_scorecard_by_id** — Get a specific scorecard in Pinpoint by id. Returns fields including id, name, interview_guidance, is_active, scorecardable_id, scorecardable_type, updated_at, created_at, as well as relationships to scorecard_notes, scorecard_sections, and stages.
- **list_all_pinpoint_candidate_surveys** — List Candidate Surveys in Pinpoint. Returns surveys sent to candidates, including key fields such as rating, comment, responded_at, created_at, and updated_at. Response also includes related application data if requested.
- **get_single_pinpoint_candidate_survey_by_id** — Get a specific candidate-survey in Pinpoint by id. Returns key fields including rating, comment, responded_at, created_at, and updated_at, as well as associated application data when included.
- **list_all_pinpoint_comments** — List Comments in Pinpoint. Returns each comment's id, body_text, commentable_id, commentable_type, created_at, private_comment, updated_at, and user_id.
- **get_single_pinpoint_comment_by_id** — Get a specific comment in Pinpoint using id. Returns fields such as body_text, commentable_id, commentable_type, created_at, private_comment, updated_at, and user_id in the response.
- **create_a_pinpoint_comment** — Create a new comment in Pinpoint. Requires body_text and commentable relationship (applications, job_seekers, or candidates). Returns id, body_text, commentable_id, commentable_type, created_at, updated_at, and user_id in the response.
- **list_all_pinpoint_custom_attributes** — List all Custom Attributes in Pinpoint for a specific object by providing custom_attributable_id and custom_attributable_type. Returns id, value, field_name, option_value, option_label, created_at, and updated_at fields in the response.
- **get_single_pinpoint_custom_attribute_by_id** — Get a specific custom attribute in Pinpoint using id. Returns fields including value, field_name, option_value, option_label, created_at, and updated_at, along with relationships to custom_field and custom_attributable.
- **create_a_pinpoint_custom_attribute** — Create a new custom attribute in Pinpoint. Requires custom_attributable_type, custom_attributable_id, and custom_field_id. Returns id, field_name, option_value, option_label, created_at, and updated_at for the new custom attribute.
- **update_a_pinpoint_custom_attribute_by_id** — Update a specific custom attribute in Pinpoint using id. You can modify only the _value field matching the field_type of the associated custom field. The response returns id, field_name, value, option_value, option_label, created_at, and updated_at.
- **delete_a_pinpoint_custom_attribute_by_id** — Delete a specific custom attribute in Pinpoint using id. Returns a meta object in the response confirming successful deletion.
- **list_all_pinpoint_custom_fields** — List all custom fields in Pinpoint. Returns id, name, description, field_type, required, position, created_at, updated_at, and relationships to custom_field_options in the response.
- **get_single_pinpoint_custom_field_by_id** — Get details about a specific custom field in Pinpoint. Requires id. Returns attributes like name, field_type, description, options, required, resource_type, created_at, and updated_at.
- **create_a_pinpoint_custom_field** — Create a new custom field in Pinpoint. Requires name, field_type, resource_type, and sample_value. Returns id, field_type, name, resource_type, required, created_at, and updated_at in the response.
- **update_a_pinpoint_custom_field_by_id** — Update a custom field in Pinpoint using its id. Cannot modify field_type or resource_type. Returns id, name, description, position, required, sample_value, and timestamps.
- **delete_a_pinpoint_custom_field_by_id** — Delete a specific custom field in Pinpoint using id. Returns meta object confirming deletion.
- **list_all_pinpoint_equality_monitoring_categories** — List equality-monitoring-categories in Pinpoint. Returns id, name, enabled, created_at, and updated_at fields along with related equality_monitoring_options if included.
- **get_single_pinpoint_equality_monitoring_category_by_id** — Get details of an equality monitoring category in Pinpoint using id. Returns created_at, enabled, name, and updated_at attributes, along with related equality_monitoring_options if included.
- **list_all_pinpoint_hiring_workflows** — List all hiring workflows in Pinpoint. Returns each workflow's id, name, creation date, update date, and related stages in the response.
- **get_single_pinpoint_hiring_workflow_by_id** — Get details for a specific hiring-workflow in Pinpoint using id. Returns attributes such as created_at, name, and updated_at, and relationships including stages for the workflow.
- **list_all_pinpoint_job_templates** — List job templates in Pinpoint. Returns an array of job templates with id, title, created_at, and updated_at fields in the response.
- **list_all_pinpoint_onboarding_applications** — List Onboarding Applications in Pinpoint. Returns a collection of onboarding applications with fields id, created_at, start_at, status, and updated_at, as well as related application and onboarding_answers data.
- **get_single_pinpoint_onboarding_application_by_id** — Get a specific onboarding application in Pinpoint using id. Returns key fields including created_at, start_at, status, and updated_at, along with related onboarding_answers and applications if included.
- **list_all_pinpoint_questions** — List questions in Pinpoint. Returns id, banked, created_at, updated_at, additional_information, num_required_answer_options, max_num_required_answer_options, question_type, required, title, and multiple_choice_options for each question.
- **list_all_pinpoint_requisition_templates** — List Requisition Templates in Pinpoint. Returns id, name, enforced_maximum_headcount, has_enforced_maximum_headcount, created_at, and updated_at fields for each requisition template.
- **get_single_pinpoint_requisition_template_by_id** — Get a specific requisition template in Pinpoint using id. Returns fields such as name, enforced_maximum_headcount, has_enforced_maximum_headcount, created_at, updated_at, and related requisition_template_fields.
- **list_all_pinpoint_structure_custom_group_ones** — List Structure Custom Group Ones in Pinpoint. Returns id, name, title, created_at, updated_at, and related jobs for each structure_custom_group_one.
- **get_single_pinpoint_structure_custom_group_one_by_id** — Get a specific structure custom group one in Pinpoint by id. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **create_a_pinpoint_structure_custom_group_one** — Create a structure custom group one in Pinpoint. Requires name. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **update_a_pinpoint_structure_custom_group_one_by_id** — Update structure custom group one in Pinpoint using id. Returns id, name, title, created_at, updated_at, and related jobs in the response.
- **delete_a_pinpoint_structure_custom_group_one_by_id** — Delete a specific structure custom group one in Pinpoint by id. Requires id. Returns meta information confirming successful deletion in the response.
- **list_all_pinpoint_structure_links** — List structure links in Pinpoint. Returns id, created_at, updated_at, division_id, location_id, department_id, structure_custom_group_one_id, accepts_speculative_applications, and optionally names and in_use fields indicating associated structure items and usage status.
- **get_single_pinpoint_structure_link_by_id** — Get a specific structure link in Pinpoint using id. Returns fields such as created_at, updated_at, division_id, location_id, department_id, structure_custom_group_one_id, accepts_speculative_applications, names, and in_use.
- **create_a_pinpoint_structure_link** — Create a new structure link in Pinpoint. Requires department and location relationships (and division or structure_custom_group_one if applicable). Returns id, created_at, updated_at, and relationship identifiers (division_id, location_id, department_id, structure_custom_group_one_id).
- **update_a_pinpoint_structure_link_by_id** — Update a specific structure link in Pinpoint using id. Only accepts_speculative_applications attribute can be updated. Returns id, type, accepts_speculative_applications, and relationship details in the response.
- **delete_a_pinpoint_structure_link_by_id** — Delete a specific structure link in Pinpoint by id. Returns meta information in the response. If the structure link is in use (assigned to resources like jobs), the request will return a 409 Conflict and must be disassociated before deletion.
- **list_all_pinpoint_structured_sections** — List all structured-sections in Pinpoint. Returns id, title, description, internal_name, created_at, updated_at, and related questions fields in the response.
- **get_single_pinpoint_structured_section_by_id** — Get a specific structured section in Pinpoint by id. Returns title, description, internal_name, created_at, updated_at, and related questions in the response.

## How it works

1. **Link your customer's Pinpoint account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Pinpoint.** The Proxy API is a 1-to-1 mapping of the Pinpoint API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync hired candidates into your HRIS or payroll platform** — HRIS and payroll SaaS companies can pull candidate and application data from Pinpoint the moment a hire is finalized, automatically creating employee records without manual re-entry. Using Truto's Unified ATS API, you read candidates, applications, jobs, departments, and locations to populate your system with accurate, structured data.
- **Trigger background checks on pipeline stage changes** — Background screening platforms can monitor Pinpoint applications, pull candidate PII when a check is needed, and write results back as custom attributes or comments. Truto handles auth and pagination so your team focuses on the screening logic, not API plumbing.
- **Distribute jobs from Pinpoint to external talent marketplaces** — Job distribution and AI sourcing tools can list all open Pinpoint jobs along with their departments and locations, then push matched candidates back as new applications. This lets your customers source talent from your platform directly into their ATS without switching tabs.
- **Inject assessment scores and interview insights into Pinpoint** — Skills assessment and video interviewing platforms can update interview summaries with rich HTML content and write custom attributes back to candidate or application records. Hiring managers see your product's output natively inside Pinpoint's UI.
- **Automate IT provisioning from offer acceptance data** — IT onboarding platforms can read accepted candidates' details, job information, and office locations from Pinpoint to provision hardware, software licenses, and workspace access before day one — eliminating manual handoffs between HR and IT.

## What you can build

- **One-click candidate import from sourcing to Pinpoint** — Create applications and attach parsed resumes directly into Pinpoint jobs using create_a_pinpoint_application, mapping candidates to the correct role, department, and location automatically.
- **Real-time org structure sync** — Pull Pinpoint's departments, locations, divisions, and jobs via the Unified ATS API to keep your product's organizational hierarchy in lockstep with your customer's ATS configuration.
- **Custom attribute writeback for external scores and statuses** — Use create_a_pinpoint_custom_attribute and update endpoints to push assessment results, screening statuses, or proprietary scores back into Pinpoint so they display natively on candidate profiles.
- **Interview summary enrichment with AI-generated notes** — Update Pinpoint interview records via update_a_pinpoint_interview_by_id to inject HTML-formatted transcription summaries, AI-generated highlights, or external meeting links directly into the hiring manager's view.
- **Candidate activity feed via comments** — Post timestamped comments to Pinpoint using create_a_pinpoint_comment, giving recruiters a running log of actions taken in your platform — like completed assessments or reference check milestones — without leaving Pinpoint.
- **Scorecard and survey analytics dashboard** — Read scorecards and candidate surveys via list_all_pinpoint_scorecards and list_all_pinpoint_candidate_surveys to power hiring quality analytics and candidate experience reporting inside your product.

## FAQs

### What authentication method does the Pinpoint integration use?

Pinpoint uses API key-based authentication. Your end users provide their Pinpoint API key, and Truto manages credential storage, token injection, and secure request signing on every call.

### Which Pinpoint objects are available through Truto's Unified ATS API?

The Unified ATS API maps Pinpoint's Applications, Candidates, Departments, Interviews, Jobs, Offices (via Pinpoint Locations), and Users. You can use these unified models alongside 60+ Pinpoint-specific proxy endpoints for resources like requisitions, scorecards, custom fields, divisions, and more.

### Can I write data back to Pinpoint or is it read-only?

Pinpoint supports full CRUD across many resources. You can create and update applications, candidates, jobs, departments, locations, custom attributes, custom fields, comments, answers, divisions, requisitions, and users. Delete operations are also available for most writable resources.

### How do I handle Pinpoint's custom fields and custom attributes?

Pinpoint distinguishes between custom fields (form-level definitions) and custom attributes (entity-level data). Truto exposes both via dedicated list, get, create, update, and delete tools, so you can dynamically discover your customer's schema and read or write bespoke data like assessment URLs or screening statuses.

### Does Truto handle pagination for Pinpoint list endpoints?

Yes. Truto automatically handles pagination across all Pinpoint list endpoints, so you receive complete result sets without managing page tokens or cursor logic in your code.

### Can I access confidential jobs from Pinpoint?

Pinpoint filters out confidential jobs by default. To include them, you need to pass the appropriate visibility filter parameter when calling list_all_pinpoint_jobs. Truto supports passing these filters through to the underlying Pinpoint API.
