hyreflow-ai Enrich API

The Enrich API from hyreflow-ai — 5 operation(s) for enrich.

GitHub OpenAPI

Operations 5

GET /enrich/runs/{run_id} Enrich Run Status #
POST /enrich/run Enrich Run #
POST /enrich/{capability} Enrich #
GET /enrich/jobs/{provider}/{job_id} Enrich Job Status #
GET /enrich/jobs/{job_id} Enrich Job Status By Id #

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/hyreflow-ai:hyreflow-ai-enrich-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

hyreflow-ai-enrich-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: hyreflow engine (local) Enrich API
  version: 0.1.0
tags:
- name: Enrich
paths:
  /enrich/runs/{run_id}:
    get:
      summary: Enrich Run Status
      description: 'An enrich run''s state — free; see `_enrich_run_state`. Decision batches (/shortlist) have their

        own route.'
      operationId: enrich_run_status_enrich_runs__run_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: run_id
        in: path
        required: true
        schema:
          type: string
          title: Run Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Enrich
  /enrich/run:
    post:
      summary: Enrich Run
      description: 'Run a dataset enrichment. Body: {input: ds_id (or input_rows: [...]), steps|specs|waterfalls,

        range: "START:END", in_place: bool, output_name, dry_run, preview, estimate, session_id}.


        Loads rows from the input dataset, runs the steps over the `range` slice (rest passed through),

        writes a NEW dataset (or in place), and returns a SUMMARY ONLY — never the rows.


        Cost transparency: every run returns a `cost_estimate` in `_meta`. A run is blocked with 402 and a

        `checkout_url` (when payments are configured) only when the balance can''t cover a single row — the

        floor below which it can make no progress; a balance that covers a row but not the whole batch at the

        worst-case rate runs, and carries a `partial_budget` warning. Use `dry_run`/`preview` to inspect

        payloads without charging; use `estimate: true` for an estimate-only call.'
      operationId: enrich_run_enrich_run_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Body
              default: {}
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
      tags:
      - Enrich
  /enrich/{capability}:
    post:
      summary: Enrich
      description: 'Per-row email waterfall (Phase-3 core). For each input row, walk the capability''s provider

        chain (reference/waterfalls.json) in order, stop at the first real hit.


        Body: {"rows": [ {}, ... ]}

        Each row is passed as the flat `payload` to every step (the engine maps it per signature).

        Missing-key / erroring providers are SKIPPED (chain continues). Only the hitting step is billed

        (soft misses charge 0). Sync providers (prospeo, lusha) run inline; async ones (bettercontact/

        fullenrich/wiza) run via the async poll path (`_run_async`, per `enrich_specs.SPECS[*].async`),

        honoring the per-row waterfall deadline.


        A multi-row call is walked STAGE-MAJOR (`HYREFLOW_BULK_ENRICH`, default on): every pending row through

        provider 1, the survivors through provider 2, … — and a provider whose spec declares `bulk` (FullEnrich)

        gets the whole pending set as ONE vendor job per <=100 rows, so the batch pays its ~45-60s job latency

        once, not per row. Each row still keeps its own reservation, settlement and outcome. Sync/unbatched

        stages fan the pending rows out `HYREFLOW_WATERFALL_CONCURRENCY` wide. The whole batch is bounded by

        BULK_BATCH_DEADLINE. With the flag off (or a single row) the row-major walk runs: each row its own

        chain and WATERFALL_DEADLINE, rows concurrent.'
      operationId: enrich_enrich__capability__post
      security:
      - HTTPBearer: []
      parameters:
      - name: capability
        in: path
        required: true
        schema:
          type: string
          title: Capability
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              default: {}
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Enrich
  /enrich/jobs/{provider}/{job_id}:
    get:
      summary: Enrich Job Status
      description: 'Free resume poll for a job the enrich waterfall started and handed off to the background sweeper

        (ENG-523) — no vendor call, no charge, just this workspace''s own `provider_jobs` row.'
      operationId: enrich_job_status_enrich_jobs__provider___job_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: provider
        in: path
        required: true
        schema:
          type: string
          title: Provider
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Enrich
  /enrich/jobs/{job_id}:
    get:
      summary: Enrich Job Status By Id
      description: 'The same free resume poll, by the job id alone: the job is looked up within this workspace.'
      operationId: enrich_job_status_by_id_enrich_jobs__job_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Enrich
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer