> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userecord.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a result

> The same record the webhook delivers for this candidate.

**Scope:** `results:read`



## OpenAPI

````yaml /blue-collar-api/api-reference/openapi.json get /results/{candidate_id}
openapi: 3.1.0
info:
  title: Record Blue Collar API
  version: 1.0.0
  description: >-
    Run Record candidate verification from your own system. You need two things:
    your **key id** and your **secret**. Everything else is generated. See
    Authentication for how.
servers:
  - url: https://api-bc.userecord.io/api/v1/partner
    description: Blue Collar API
security: []
tags:
  - name: Skills
    description: The skill taxonomy, read live a page at a time
  - name: Skill requests
    description: Ask Record to add a missing skill
  - name: Lookups
    description: >-
      Lookups for filling in a job mandate: places in India, the countries an
      abroad job can be in, and the employment types and shifts the playground
      offers
  - name: Workflows
    description: >-
      Your organisation's blue-collar workflows (read all; change and
      soft-delete only the ones you created)
  - name: Job mandates
    description: >-
      Your organisation's job mandates, addressed by Record's mandate_id (read
      all; change only the ones you created)
  - name: Campaigns
    description: Contact candidates for one of your jobs and verify them. Spends credits
  - name: Results
    description: >-
      What Record collected from each candidate: status (pending, completed,
      declined, failed) and an output of answers and verdicts
  - name: Events
    description: >-
      Pull your result events and acknowledge them: the safety net behind the
      webhook, and a way to receive results without exposing a URL
  - name: Webhooks
    description: >-
      Endpoints that Record POSTs result events to: signed, retried until you
      acknowledge, replayable
  - name: Analytics
    description: >-
      The workflow Overview analytics of the Record playground: funnel,
      channels, follow-ups, calls, drop-offs, languages (read-only, scope
      analytics:read)
paths:
  /results/{candidate_id}:
    get:
      tags:
        - Results
      summary: Get a result
      description: |-
        The same record the webhook delivers for this candidate.

        **Scope:** `results:read`
      operationId: getResult
      parameters:
        - name: candidate_id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[A-Za-z0-9_-]{4,64}$
          example: a3f1c9d2-7b44-4e0a-9c1d-5e6f7a8b9c01
      responses:
        '200':
          description: The result record
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    const: true
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      candidate_id:
                        type: string
                      external_id:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Your own id for the candidate, if you sent one
                      campaign_id:
                        type: string
                      mandate_id:
                        anyOf:
                          - type: string
                          - type: 'null'
                      job_id:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: Your job id; null for a mandate created without one
                      workflow_id:
                        type: string
                      name:
                        type: string
                      status:
                        type: string
                        enum:
                          - pending
                          - completed
                          - declined
                          - failed
                        description: >-
                          pending: not finished yet. completed: finished,
                          `output` holds what Record collected. declined: the
                          candidate said not interested. failed: no result could
                          be got, see `reason`
                      reason:
                        anyOf:
                          - type: string
                            enum:
                              - undeliverable
                              - no_response
                          - type: 'null'
                        description: >-
                          Only for failed. undeliverable: the invite could not
                          be delivered. no_response: every attempt went
                          unanswered
                      attempts:
                        type: integer
                        description: >-
                          Times Record tried to reach the candidate: invite,
                          follow-ups and phone calls
                      language:
                        type: string
                      location_name:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The town the candidate was in when they allowed
                          location on the verification link. null when they
                          denied it, it could not be looked up, or they verified
                          by phone call
                      metadata:
                        type: object
                        additionalProperties:
                          anyOf:
                            - type: string
                            - type: number
                            - type: boolean
                        description: The `metadata` you sent for this candidate, unchanged
                      started_at:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: When the invite went out
                      completed_at:
                        anyOf:
                          - type: string
                          - type: 'null'
                      updated_at:
                        type: string
                      output:
                        type: object
                        properties:
                          enrichment:
                            type: object
                            properties:
                              qualified:
                                anyOf:
                                  - type: boolean
                                  - type: 'null'
                              answers:
                                type: object
                                additionalProperties:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                              answers_native:
                                type: object
                                additionalProperties:
                                  type: string
                            description: >-
                              Answers to your screening questions, keyed by the
                              question's text
                          skill_verification:
                            type: object
                            properties:
                              verdict:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              total_score:
                                anyOf:
                                  - type: number
                                  - type: 'null'
                              is_partial:
                                type: boolean
                              answered:
                                anyOf:
                                  - type: number
                                  - type: 'null'
                              total:
                                anyOf:
                                  - type: number
                                  - type: 'null'
                              skills:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    rating:
                                      type: string
                              call_recording_url:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                                description: >-
                                  The phone call's recording, when they verified
                                  by call
                              answers:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    skill:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    question:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    answer:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    answer_native:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    rating:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    summary:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    video_url:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                      description: The video of this answer
                            description: >-
                              The skill-verification result and what the
                              candidate said
                          interest_collection:
                            type: object
                            properties:
                              current_role:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              other_roles:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    role:
                                      type: string
                                    years:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                              answers:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    role:
                                      type: string
                                    summary:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    transcripts:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          label:
                                            type: string
                                          text:
                                            type: string
                            description: Other roles the candidate is open to
                        description: >-
                          What Record collected. A section appears only once its
                          data exists, and only if that check ran for the job
              example:
                success: true
                data:
                  candidate_id: a3f1c9d2-7b44-4e0a-9c1d-5e6f7a8b9c01
                  external_id: cand-88231
                  campaign_id: asmnt_9f2c41d7a8b3e65f
                  mandate_id: JM_261009101612456H3N8W2L5C9V1Z4
                  job_id: job-10452
                  workflow_id: WF_BG_261009101530123K7M2P9Q4X7R5T8
                  name: Ravi Kumar
                  status: completed
                  reason: null
                  attempts: 3
                  language: tamil
                  location_name: Coimbatore
                  metadata:
                    ats_application_id: app_991
                  started_at: '2026-10-05T09:30:00.000Z'
                  completed_at: '2026-10-05T12:41:10.000Z'
                  updated_at: '2026-10-05T12:41:10.000Z'
                  output:
                    enrichment:
                      qualified: true
                      answers:
                        Do you have a valid driving licence?: 'yes'
                        Why do you want this job?: I want a stable job near home
                    skill_verification:
                      verdict: Good Fit
                      total_score: 78
                      is_partial: false
                      answered: 3
                      total: 3
                      skills:
                        - name: Forklift Basic Operation
                          rating: Strong
                      call_recording_url: null
                      answers:
                        - skill: Forklift Basic Operation
                          question: What do you check before lifting a load?
                          answer: >-
                            I check the load weight against the forklift rating
                            and that the forks are level.
                          answer_native: null
                          rating: Strong
                          summary: Mentions weight limit and fork position.
                          video_url: >-
                            https://storage.googleapis.com/record-interviews/sess_91c2/q1.mp4
                    interest_collection:
                      current_role: Forklift Operator
                      other_roles:
                        - role: Store Keeper
                          years: 1 to 2 years
        '404':
          description: '`NOT_FOUND`: No such `candidate_id` for this key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKey: []
          SecretKey: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            pcall GET
            "/api/v1/partner/results/a3f1c9d2-7b44-4e0a-9c1d-5e6f7a8b9c01"
        - lang: javascript
          label: JavaScript
          source: >-
            const res = await call("GET",
            "/api/v1/partner/results/a3f1c9d2-7b44-4e0a-9c1d-5e6f7a8b9c01");

            const { data } = await res.json();
        - lang: python
          label: Python
          source: >-
            res = call("GET",
            "/api/v1/partner/results/a3f1c9d2-7b44-4e0a-9c1d-5e6f7a8b9c01")

            data = res.json()["data"]
components:
  schemas:
    Error:
      type: object
      properties:
        success:
          const: false
          type: boolean
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - VALIDATION_FAILED
                - LIMIT_EXCEEDED
                - UNAUTHORIZED
                - SCOPE_MISSING
                - FORBIDDEN
                - HTTPS_REQUIRED
                - NOT_FOUND
                - CONFLICT
                - WORKFLOW_IN_USE
                - INSUFFICIENT_CREDITS
                - IDEMPOTENCY_KEY_REQUIRED
                - IDEMPOTENCY_KEY_REUSED
                - IDEMPOTENCY_IN_PROGRESS
                - PAYLOAD_TOO_LARGE
                - UNSUPPORTED_MEDIA_TYPE
                - RATE_LIMITED
                - COOLDOWN
                - DAILY_CAP
                - SERVICE_DISABLED
                - SERVER_ERROR
            message:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
            request_id:
              type: string
              description: Quote it to Record support
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Your key id, `VFN_TEST_…` or `VFN_LIVE_…`. Sent on every request.
    SecretKey:
      type: apiKey
      in: header
      name: x-secret-key
      description: >-
        Your secret, `VFN_SK_…`. **Not a real header, and never sent to the
        API.** It is only a form field for Try it, which uses it to sign your
        request in your browser. In your own code you sign each request with the
        secret and send `x-api-key`, `x-timestamp` and `x-signature` (see
        Authentication).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.