Hightouch Idr API

The Idr API from Hightouch — 4 operation(s) for idr.

Business capability
Customer Data Management BC-420.10

Operations 4

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /idr/{graphId}/trigger Start an identity resolution run · Trigger IDR run #
Ask an LLM
“How do I trigger a new identity resolution run for a graph?”
“Can I force a full rerun of the identity graph instead of an incremental one?”
Tell an agent
Trigger an IDR run for graph {graphId}.
Start a full identity resolution rerun of graph {graphId} ({fullRerun}).
GET /idr/{graphId}/runs List identity resolution runs for a graph · List IDR runs #
Ask an LLM
“What identity resolution runs have happened on my graph recently?”
“Can I see IDR runs that started within a date range?”
Tell an agent
List IDR runs for graph {graphId}.
Show IDR runs for graph {graphId} started after {after} and before {before}.
POST /idr/{graphId}/queue-for-reprocessing Blocklist and reprocess identifier values · Queue identifier values for reprocessing #
Ask an LLM
“How do I remove a bad email from identity resolution so it's ignored in future runs?”
“Can I reprocess clusters for certain identifiers without adding them to the blocklist?”
Tell an agent
Queue identifiers {identifiers} in graph {graphId} for reprocessing and blocklist them.
Reprocess identifiers {identifiers} in graph {graphId} with blocklisting set to {block}.
GET /idr/{graphId}/reprocess-status/{requestId} Check the status of a reprocessing request · Reprocess status #
Ask an LLM
“Has my identifier reprocessing job finished yet?”
“What is the status of a queued reprocessing request on an identity graph?”
Tell an agent
Get the status of reprocessing request {requestId} on graph {graphId}.
Check whether reprocessing request {requestId} for graph {graphId} is done.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hightouch:hightouch-idr-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hightouch-idr-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hightouch Idr API
  version: 1.0.0
  description: Hightouch Public Rest API to access syncs, models, sources and destinations
  contact:
    name: Hightouch
    url: https://hightouch.com
servers:
- url: https://api.hightouch.com/api/v1
tags:
- name: Idr
paths:
  /idr/{graphId}/trigger:
    post:
      operationId: TriggerIdrRun
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TriggerRunIdrOutput'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: Trigger a new IDR run for a graph
      summary: Trigger IDR run
      security:
      - bearerAuth: []
      parameters:
      - in: path
        name: graphId
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerRunIdrInput'
      tags:
      - Idr
  /idr/{graphId}/runs:
    get:
      operationId: ListIdrRuns
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListIdrRunsOutput'
              examples:
                Example 1:
                  value:
                    data:
                    - id: 715eba82-2097-4c1b-91c0-ae7c279c763a
                      graphId: e9037b3e-2401-48f9-85eb-8c6e75e3a813
                      status: SUCCESS
                      createdAt: '2025-06-01T00:00:00.000Z'
                      startedAt: '2025-06-01T00:00:01.000Z'
                      finishedAt: '2025-06-01T00:00:02.000Z'
                      fullRerun: false
                      stats:
                        deterministic:
                          numUniqueProfiles: 100
                          numNewUniqueProfiles: 50
                          numSourceRows: 1000
                    hasMore: true
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: List runs for a given IDR graph
      summary: List IDR runs
      security:
      - bearerAuth: []
      parameters:
      - description: Required. ID of the graph to list runs for.
        in: path
        name: graphId
        required: true
        schema:
          type: string
      - description: Run ID to query for.
        in: query
        name: runId
        required: false
        schema:
          type: string
      - description: Select runs that started on or after this ISO timestamp.
        in: query
        name: after
        required: false
        schema:
          format: date-time
          type: string
      - description: Select runs that started on or before this ISO timestamp.
        in: query
        name: before
        required: false
        schema:
          format: date-time
          type: string
      - description: Maximum number of runs to return.
        in: query
        name: limit
        required: false
        schema:
          default: 20
          format: double
          type: number
      - description: Offset to start at for pagination.
        in: query
        name: offset
        required: false
        schema:
          default: 0
          format: double
          type: number
      - description: Field to sort by.
        in: query
        name: orderBy
        required: false
        schema:
          default: created_at
          type: string
          enum:
          - created_at
          - started_at
          - finished_at
      tags:
      - Idr
  /idr/{graphId}/queue-for-reprocessing:
    post:
      operationId: QueueForReprocessing
      responses:
        '200':
          description: ID associated with the reprocessing request. This can be used to query the status of the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdrQueueForReprocessingOutput'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: 'Trigger an async job to queue identifier values for reprocessing, optionally adding them to the blocklist.

        If `block` is true (the default), identifier values will be added to the blocklist and ignored in future runs.

        Clusters containing these identifier values will be queued for reprocessing.'
      summary: Queue identifier values for reprocessing
      security:
      - bearerAuth: []
      parameters:
      - description: Required. ID of the graph containing the identifiers.
        in: path
        name: graphId
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdrQueueForReprocessingInput'
            example:
              identifiers:
              - identifier: email
                value: a@b.com
              - identifier: phone
                value: '1234567890'
              block: true
      tags:
      - Idr
  /idr/{graphId}/reprocess-status/{requestId}:
    get:
      operationId: ReprocessStatus
      responses:
        '200':
          description: The status of the reprocessing request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdrReprocessStatusOutput'
              examples:
                queueing:
                  value:
                    status: queueing
                    queuedAt: null
                    reprocessedAt: null
                    reprocessedRunId: null
                    recordFound: null
                    error: null
                queued:
                  value:
                    status: queued
                    queuedAt: '2025-10-07T01:23:45.678Z'
                    reprocessedAt: null
                    reprocessedRunId: null
                    recordFound: null
                    error: null
                reprocessed:
                  value:
                    status: reprocessed
                    queuedAt: '2025-10-07T01:23:45.678Z'
                    reprocessedAt: '2025-10-07T01:23:45.678Z'
                    reprocessedRunId: 123e4567-e89b-12d3-a456-426614174000
                    recordFound:
                    - true
                    - false
                    error: null
                failed:
                  value:
                    status: failed
                    queuedAt: null
                    reprocessedAt: null
                    reprocessedRunId: null
                    recordFound: null
                    error: Failed to write identifiers to data warehouse
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: Get the status of a reprocessing request
      security:
      - bearerAuth: []
      parameters:
      - description: Required. ID of the graph for the reprocessing request.
        in: path
        name: graphId
        required: true
        schema:
          type: string
      - description: Required. ID of the reprocessing request.
        in: path
        name: requestId
        required: true
        schema:
          type: string
      tags:
      - Idr
      summary: Reprocess status
      x-summary-source: derived
components:
  schemas:
    IdrRun:
      properties:
        fullRerun:
          type: boolean
        stats:
          $ref: '#/components/schemas/IdrRunStatsByThreshold'
          description: If available, the stats at the end of a successful run.
        finishedAt:
          type: string
          format: date-time
          description: Timestamp of the run's completion. Only set for successful or failed runs.
        startedAt:
          type: string
          format: date-time
          description: Timestamp of the run's start. Not set for queued runs.
        createdAt:
          type: string
          format: date-time
        error:
          type: string
          description: If available, the error associated with a failed status.
        status:
          type: string
          enum:
          - QUEUED
          - PROCESSING
          - SUCCESS
          - FAILURE
          - CANCELLED
        graphId:
          type: string
        id:
          type: string
      required:
      - fullRerun
      - createdAt
      - status
      - graphId
      - id
      type: object
    IdrRunStats:
      properties:
        numSourceRows:
          type: number
          format: double
          description: The exact number of rows processed from sources in this run.
        numNewUniqueProfiles:
          type: number
          format: double
          description: The exact number of unique profiles in the graph created during this run.
        numUniqueProfiles:
          type: number
          format: double
          description: The exact number of unique profiles in the graph at the end of the run.
      required:
      - numSourceRows
      - numNewUniqueProfiles
      - numUniqueProfiles
      type: object
    ListIdrRunsOutput:
      description: The output of a request to list runs for an IDR graph.
      properties:
        data:
          items:
            $ref: '#/components/schemas/IdrRun'
          type: array
        hasMore:
          type: boolean
      required:
      - data
      - hasMore
      type: object
      additionalProperties: false
    ValidateErrorJSON:
      properties:
        message:
          type: string
          enum:
          - Validation failed
        details:
          properties: {}
          additionalProperties: {}
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    TriggerRunIdrOutput:
      properties:
        id:
          type: string
          description: The id of the triggered run.
      required:
      - id
      type: object
      additionalProperties: false
    IdrReprocessStatusOutput:
      properties:
        status:
          type: string
          enum:
          - queueing
          - queued
          - reprocessed
          - failed
          - cancelled
          description: '"queueing": The identifiers are being queued for reprocessing.

            "queued": The identifiers have been queued and added to the blocklist. Their associated clusters will be reprocessed next time the graph runs.

            "reprocessed": The identifiers'' clusters have been reprocessed during a run.

            "failed": We failed to queue the identifiers for reprocessing.

            "cancelled": The reprocessing request has been cancelled.'
        queuedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: Set if the status is "queued" or "reprocessed". The timestamp when the identifiers were queued for reprocessing.
        reprocessedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: Set if the status is "reprocessed". The timestamp when the identifiers' clusters were reprocessed.
        reprocessedRunId:
          type:
          - string
          - 'null'
          description: Set if the status is "reprocessed". The ID of the run that reprocessed the identifiers' clusters.
        recordFound:
          items:
            type: boolean
          type:
          - array
          - 'null'
          description: 'One result per identifier, in the order they were submitted.

            True if the identifier was found in the graph at the start of the run that processed the request.

            Null until the request is processed, and on requests submitted before this field existed on the API.'
        error:
          type:
          - string
          - 'null'
          description: If available, the error message from failing to queue the identifiers for reprocessing.
      required:
      - status
      - queuedAt
      - reprocessedAt
      - reprocessedRunId
      - recordFound
      - error
      type: object
      additionalProperties: false
    IdrRunStatsByThreshold:
      properties:
        probabilistic-loose:
          $ref: '#/components/schemas/IdrRunStats'
        probabilistic-strict:
          $ref: '#/components/schemas/IdrRunStats'
        deterministic:
          $ref: '#/components/schemas/IdrRunStats'
      additionalProperties:
        $ref: '#/components/schemas/IdrRunStats'
      type: object
    IdrQueueForReprocessingInput:
      properties:
        identifiers:
          items:
            properties:
              value:
                type: string
              identifier:
                type: string
            required:
            - value
            - identifier
            type: object
          type: array
          description: 'e.g. [{ identifier: "email", value: "a@b.com" }]

            Identifier values will be queued for reprocessing.

            Clusters containing these identifiers will be reprocessed on the next run.'
          maxItems: 1000
        block:
          type: boolean
          description: If true, identifier values will also be added to the blocklist and ignored in future runs.
          default: 'true'
      required:
      - identifiers
      type: object
      additionalProperties: false
    TriggerRunIdrInput:
      properties:
        fullRerun:
          type: boolean
          description: Whether to resync the entire Identity Graph or process incrementally.
          default: 'false'
      type: object
      description: The input of a trigger action to run IDR.
    IdrQueueForReprocessingOutput:
      properties:
        requestId:
          type: string
          description: ID associated with the reprocessing request. This can be used to query the status of the request.
      required:
      - requestId
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bearer
x-provenance:
  method: harvested
  publisher: Hightouch
  source: https://api.hightouch.com/api/swagger.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)