Inhalt

v1

Partner-API

Bypass Monitor API-Integration

Erfahren Sie, wann Ihre Vorstellungen eingestellt werden

Übermitteln Sie Kandidatinnen und Kandidaten, die Sie Kunden vorgestellt haben, und erkennen Sie, wenn sie dort auftauchen, samt Belegen und zeitlicher Einordnung.

Besonders geeignet für

Personaldienstleister und Recruiting-Agenturen, die ihre Kundenvorstellungen verfolgen

RPO-Anbieter, die das Ergebnis ihrer Vorstellungen prüfen

ATS-Anbieter, die Bypass-Erkennung in Agenturabläufe aufnehmen

Teams, die Kandidaten mehreren Kunden vorstellen und Einstellungen nachvollziehen wollen

Partner, die Vorstellungsdaten und Kundennamen bereits erfassen

Ablauf der Integration

1

Zugang freischalten lassen und API-Schlüssel erhalten

Fragen Sie den Zugang bei TieTalent an. Nach der Freigabe erhalten Sie einen X-API-Key für Ihre Integration.

2

Eine Bypass-Prüfung anfordern

POST an /api/v1/bypass-checks mit den Identitätsmerkmalen, den submissions an Kunden und der angegebenen experience (oder profile_urls, wenn Sie keine Erfahrungsdaten senden können).

3

202 Accepted erhalten

Die Antwort enthält eine id der Prüfung, status: pending, candidate_id sowie additive credits / plan. Es gibt kein Top-Level-Boolean cached (anders als bei Talent Update); credits.cached ist vorhanden und false, weil Bypass-Prüfungen nicht wiederverwendet werden. Fragen Sie ab oder warten Sie auf den Webhook.

4

Abfragen oder auf einen Webhook warten

GET /api/v1/bypass-checks/{id}, bis status den Wert completed oder failed hat. Webhooks (bypass_check_ready / bypass_check_failed) sind vorzuziehen, sofern eingerichtet.

5

Auf die Belege reagieren

Wenn bypass.detected den Wert true hat, prüfen Sie bypass.matches: vorgestelltes Unternehmen, gefundener Arbeitgeber, Qualität der Übereinstimmung und Eintrittszeitpunkt im Verhältnis zu Ihrem Vorstellungsdatum.

Authentifizierung

Senden Sie Ihren Partner-API-Key bei jeder Anfrage im X-API-Key-Header, genau wie bei Candidate Intelligence und Talent Update. Eine Anfrage darf maximal 50 Kandidaten enthalten, und jeder Kandidat verbraucht eine Einheit Ihres Minuten-Ratenlimits.

Header der Anfrage

X-API-Key: ats_your_api_key_here
Content-Type: application/json

Prüfung erstellen

Erstellt eine asynchrone Bypass-Prüfung. TieTalent führt intern ein Talent Update aus und vergleicht anschließend die gefundenen Arbeitgeber mit Ihrer Vorstellungsliste.

Senden Sie vollständige submissions mit Vorstellungsdaten, wann immer Sie sie haben; die zeitliche Einordnung beruht auf submitted_at.

POST/api/v1/bypass-checks
{
  "candidate": {
    "id": "cand-9911",
    "first_name": "Alex",
    "last_name": "Rivera",
    "email": "alex.rivera@example-corp.com",
    "employer_website": "example-corp.com",
    "role": "Software Engineer",
    "location": "London, UK",
    "profile_urls": [
      "https://linkedin.com/in/alex-rivera-example"
    ],
    "experience": [
      {
        "company": "Previous Corp",
        "role": "Engineer",
        "start_date": "2014-01",
        "end_date": "2016-01",
        "is_current": false
      }
    ],
    "submissions": [
      { "company": "Acme Client Ltd", "submitted_at": "2025-03" },
      { "company": "Beta Industries AG", "submitted_at": "2024-11" }
    ]
  }
}

Felder der Anfrage

candidate (erforderliches Objekt)

Enthält alle Identitätsfelder von Talent Update sowie submissions und experience, sofern Sie keine profile_urls übermitteln. Siehe auch die Anfragefelder von Talent Update.

Identitätskombination (mindestens eine)

Felder

Genauigkeit

A

first_name + last_name + profile_urls

Am zuverlässigsten und am günstigsten. Eine Profil-URL beseitigt jeden Zweifel daran, wen wir recherchieren.

B

first_name + last_name + (employer_website or company)

Zuverlässig. Der Arbeitgeber bestätigt, dass es sich um Ihre Kandidatin oder Ihren Kandidaten handelt und nicht um eine Namensgleichheit.

C

email (geschäftlich)

Gut. Eine Firmendomain nennt uns den Arbeitgeber und der Name wird aus der Adresse gelesen, sie genügt also allein. Senden Sie auch einen Namen, wenn Sie einen haben.

D

email (privat) + (employer_website oder company)

Gut, wenn die Adresse den Namen enthält, zum Beispiel jane.doe@gmail.com. Eine private Domain sagt nichts über den Arbeitgeber, also verankert das Unternehmen die Suche und ist erforderlich. Senden Sie auch first_name und last_name, wenn Sie sie haben: eine Adresse wie jdoe92@ gibt uns wenig, und das Profil kann leer zurückkommen.

E

employer_website + role

Am schwächsten und nur für Kandidaten gedacht, deren Namen Sie nicht haben. Sie identifiziert eine Position, keine Person: Wir antworten nur, wenn genau eine Person diese Position innehat, und nie über mittlere Konfidenz hinaus.

F

first_name + last_name

Funktioniert, weil jede Bypass-Monitor-Anfrage auch experience oder profile_urls enthält: Die angegebenen Arbeitgeber verbinden den Namen mit der richtigen Person. Ein kurzer oder allgemeiner Werdegang liefert weniger Anhaltspunkte; ergänzen Sie ein Unternehmen oder eine E-Mail, wenn Sie eine haben.

idIhre Kennung für die Person. Wird als candidate_id zurückgegeben.
first_name, last_name, email, employer_website, company, role, location, profile_urlsDieselben Regeln wie bei Talent Update.
experienceOptional, wenn profile_urls übermittelt wird, sonst erforderlich (max. 40). Beschäftigungen, die Ihnen bereits bekannt sind; sie helfen, eine neue Anstellung von einem bereits bekannten Arbeitgeber zu unterscheiden. Senden Sie ein leeres Array, wenn Sie keine haben, und geben Sie stattdessen eine Profil-URL an.
submissionsErforderlich. Mindestens ein Eintrag (max. 100). Je Vorstellung: company (der Kunde, dem Sie die Person vorgestellt haben) und optional submitted_at (YYYY-MM oder YYYY-MM-DD).

submissions[] object

companyName des Kundenunternehmens, wie Sie die Vorstellung erfasst haben. Erforderlich.
submitted_atWann Sie die Person diesem Kunden vorgestellt haben. Wird für die zeitliche Einordnung verwendet.

Optionale Felder auf oberster Ebene

mode"precompute" für Stapelprüfungen im Hintergrund. Siehe Prüfungen vorberechnen.

Nicht akzeptiert

Kein Lebenslauf, kein Datei-Upload. Nur Identitätsmerkmale und strukturierte Angaben zur Vorstellung.

Feldregeln

Fehlgeschlagene Validierungen geben 422 mit application/problem+json zurück.

experienceErforderlich, sofern Sie keine profile_urls senden. Jeder Eintrag benötigt company. Geben Sie start_date und end_date an, wenn Sie sie haben: damit lässt sich eine frühere Station bei einem Kunden von einer neuen unterscheiden.
submissionsMindestens ein Eintrag. Jeder benötigt company. Maximal 100 pro Person.
submitted_atYYYY-MM oder YYYY-MM-DD, sofern angegeben.
emailGeschäftlich oder privat (dieselben Regeln wie bei Talent Update). Eine private Adresse braucht company oder employer_website dazu.
Optionale FelderKönnen weggelassen oder als null gesendet werden. Beides gilt als nicht vorhanden, daher wird "end_date": null bei einer aktuellen Position akzeptiert.

Prüfungen vorberechnen

Verwenden Sie POST /api/v1/bypass-checks mit mode: "precompute", um Prüfungen im Hintergrund vorzubereiten, bevor eine Recruiterin oder ein Recruiter den Vorstellungsdatensatz öffnet.

Die Stapelvorberechnung akzeptiert bis zu 50 Personen pro Anfrage über das candidates-Array. Live-Aufrufe erfordern ein einzelnes candidate-Objekt. Bypass-Prüfungen kennen weder force_refresh noch ein Cache-Kennzeichen beim Erstellen.

Vorberechnung im Stapel

Senden Sie mode: "precompute" mit candidates statt candidate. Jede Person muss submissions enthalten sowie entweder experience oder profile_urls.

{
  "mode": "precompute",
  "candidates": [
    {
      "id": "cand-9911",
      "first_name": "Alex",
      "last_name": "Rivera",
      "email": "alex.rivera@example-corp.com",
      "experience": [
        { "company": "Previous Corp", "is_current": false }
      ],
      "submissions": [
        { "company": "Acme Client Ltd", "submitted_at": "2025-03" }
      ]
    }
  ]
}

Das Nutzungsvolumen wird über Ihre Plan-Credits gemessen; wie schnell Sie sie ausgeben dürfen, über das Anfragen-pro-Minute-Limit Ihres Tarifs, das Live-Aufrufe, Precompute-Aufrufe und die CSV-Anreicherung gemeinsam nutzen. Ein Überschreiten des Ratenlimits liefert 429 Too Many Requests mit dem Fehler rate-limit-exceeded und einem Retry-After; versuchen Sie es danach erneut. Die Limits pro Tarif und die Antwort-Header finden Sie unter Ratenlimits.

Antwort auf die Erstellung

Eine erfolgreiche Erstellung gibt 202 Accepted mit status: pending zurück, plus die additiven Objekte credits (Restguthaben und Belastung für diesen Aufruf) und plan (aktueller Plan). Diese Felder sind nicht-breaking und erfordern keinen Versionswechsel. Die Stapelvorberechnung gibt ein items-Array sowie Top-Level-credits / plan zurück. Es gibt kein Top-Level-Boolean cached (anders als bei Talent Update); credits.cached ist vorhanden und immer false, weil Bypass-Prüfungen nicht wiederverwendet werden.

Antwort für eine Person

202
{
  "id": "bc_01JCXY",
  "status": "pending",
  "candidate_id": "cand-9911",
  "created_at": "2026-08-28T12:56:44.642Z",
  "credits": {
    "balance": 140,
    "plan_credits": 118,
    "rollover_credits": 22,
    "charged": 2,
    "cached": false
  },
  "plan": {
    "code": "growth",
    "cycle": "monthly",
    "credits_per_cycle": 200,
    "requests_per_minute": 300,
    "period_ends_at": "2026-10-28T12:00:00.000Z"
  }
}

Antwort auf die Vorberechnung im Stapel

Jeder Eintrag enthält id, status: pending, candidate_id, created_at sowie credits und plan pro Eintrag.

202
{
  "items": [
    {
      "id": "bc_01JCXY",
      "status": "pending",
      "candidate_id": "cand-9911",
      "created_at": "2026-08-28T12:56:44.642Z",
      "credits": {
        "balance": 138,
        "plan_credits": 116,
        "rollover_credits": 22,
        "charged": 2,
        "cached": false
      },
      "plan": {
        "code": "growth",
        "cycle": "monthly",
        "credits_per_cycle": 200,
        "requests_per_minute": 300,
        "period_ends_at": "2026-10-28T12:00:00.000Z"
      }
    },
    {
      "id": "bc_01JCXZ",
      "status": "pending",
      "candidate_id": "cand-9912",
      "created_at": "2026-08-28T12:56:45.102Z",
      "credits": {
        "balance": 138,
        "plan_credits": 116,
        "rollover_credits": 22,
        "charged": 1,
        "cached": false
      },
      "plan": {
        "code": "growth",
        "cycle": "monthly",
        "credits_per_cycle": 200,
        "requests_per_minute": 300,
        "period_ends_at": "2026-10-28T12:00:00.000Z"
      }
    }
  ],
  "credits": {
    "balance": 138,
    "plan_credits": 116,
    "rollover_credits": 22,
    "charged": 3,
    "cached": false
  },
  "plan": {
    "code": "growth",
    "cycle": "monthly",
    "credits_per_cycle": 200,
    "requests_per_minute": 300,
    "period_ends_at": "2026-10-28T12:00:00.000Z"
  }
}

credits.balance ist das Restguthaben; plan_credits und rollover_credits sind die Guthaben-Buckets; charged sind für diese Prüfung reservierte oder belastete Credits (oft skaliert nach eindeutigen vorgestellten Unternehmen), oder null wenn bei GET nicht anwendbar; credits.cached ist bei Bypass-Prüfungen immer false. plan enthält code (free, starter, growth oder custom), cycle (monthly, annual oder null), credits_per_cycle und period_ends_at. Ignorieren Sie diese Felder, wenn ungenutzt.

Prüfung abrufen

Rufen Sie GET /api/v1/bypass-checks/{id} auf, um das Ergebnis der Prüfung abzuholen.

Werte von status

pendingPrüfung läuft (einschließlich des internen Talent Updates).
completedPrüfung abgeschlossen. bypass und gegebenenfalls talent_update sind gefüllt.
failedDie Prüfung ist fehlgeschlagen. Siehe error.

Solange status pending ist

{
  "id": "bc_01JCXY",
  "status": "pending",
  "candidate_id": "cand-9911",
  "created_at": "2026-08-28T12:56:44.642Z",
  "completed_at": null,
  "bypass": {
    "detected": false,
    "note": null,
    "matches": []
  },
  "talent_update": null,
  "error": null,
  "credits": {
    "balance": 140,
    "plan_credits": 118,
    "rollover_credits": 22,
    "charged": 2,
    "cached": false
  },
  "plan": {
    "code": "growth",
    "cycle": "monthly",
    "credits_per_cycle": 200,
    "requests_per_minute": 300,
    "period_ends_at": "2026-10-28T12:00:00.000Z"
  }
}

Wenn status completed ist

{
  "id": "bc_01JCXY",
  "status": "completed",
  "candidate_id": "cand-9911",
  "created_at": "2026-08-28T12:56:44.642Z",
  "completed_at": "2026-08-28T12:58:12.441Z",
  "error": null,
  "bypass": {
    "detected": true,
    "note": "Confirmed: Alex Rivera was found working at Acme Client Limited, another name for Acme Client Ltd, the company the candidate was put forward to in March 2025, having joined in April 2025.",
    "matches": [
      {
        "submitted_company": "Acme Client Ltd",
        "found_company": "Acme Client Limited",
        "match_type": "variant",
        "submitted_at": "2025-03",
        "employment_start": "2025-04",
        "timing": "joined_after_submission",
        "confidence": "confirmed"
      }
    ]
  },
  "talent_update": {
    "identity": {
      "confidence": "high",
      "full_name": "Alex Rivera",
      "headline": "Software Engineer at Acme Client Limited",
      "current_employer": "Acme Client Limited",
      "location": "London, UK"
    },
    "work_experience": [
      {
        "company": "Acme Client Limited",
        "role": "Software Engineer",
        "start_date": "2025-04",
        "end_date": null,
        "is_current": true,
        "confidence": "high"
      }
    ],
    "education": [],
    "online_presence": []
  },
  "credits": {
    "balance": 140,
    "plan_credits": 118,
    "rollover_credits": 22,
    "charged": 2,
    "cached": false
  },
  "plan": {
    "code": "growth",
    "cycle": "monthly",
    "credits_per_cycle": 200,
    "requests_per_minute": 300,
    "period_ends_at": "2026-10-28T12:00:00.000Z"
  }
}

Felder der Antwort

Die Antwort enthält immer ein bypass-Objekt. Nach Abschluss kann zusätzlich ein verschachteltes talent_update-Profil enthalten sein. GET-Antworten enthalten außerdem dieselben additiven Objekte credits und plan wie Create.

bypass.detectedtrue, wenn mindestens ein vorgestelltes Unternehmen mit einem neu gefundenen Arbeitgeber übereinstimmt.
bypass.noteEin oder zwei einfache Sätze für eine Person. Sie beginnen mit der Prüfstufe (Bestätigt, Wahrscheinlich oder Zu prüfen) oder mit Nicht gemeldet und erklären dann, warum: wo die Person beschäftigt gefunden wurde, wie das mit dem Unternehmen zusammenhängt, dem Sie sie vorgestellt haben, und wann sie dort begonnen hat. null, solange die Prüfung läuft oder wenn der Hinweis nicht erstellt werden konnte.
bypass.matches[]Nachweiszeilen: submitted_company, found_company, match_type, submitted_at, employment_start, timing, confidence.
talent_updateOptional verschachteltes Profil (gleiche Struktur wie bei Talent Update), wenn die Identifizierung gelungen ist.
creditsRestguthaben und Belastung für diese Prüfung: balance, plan_credits, rollover_credits, charged, cached.
planAktueller Plan: code, cycle, credits_per_cycle, period_ends_at.

timing vergleicht den Monat der Vorstellung mit dem Monat des Beschäftigungsbeginns: joined_after_submission, already_employed oder not_determinable, wenn Datumsangaben fehlen. Hat die Person beim gefundenen Unternehmen mehr als ein Jahr vor Ihrer Vorstellung begonnen, wird die Übereinstimmung nicht gemeldet und bypass.note erklärt den Grund.

confidence zeigt, wie viel Prüfung ein Treffer benötigt. confirmed: gut belegt, die Firmennamen stimmen überein und das Startdatum liegt nach Ihrer Übermittlung. likely: belegt, aber der Treffer betrifft eine Mutter- oder Tochtergesellschaft, oder die Identität war weniger eindeutig. needs_review: schwächere Belege, eine Schwestergesellschaft im selben Konzern wie das Unternehmen, bei dem Sie eingereicht haben, kein verwertbares Beschäftigungsdatum, der Kandidat war vor Ihrer Übermittlung bereits dort tätig, oder geringere Identitätssicherheit. Prüfen Sie einen needs_review-Treffer selbst, bevor Sie handeln.

Aufzählungen

Aufzählungen können mit der Zeit neue Werte erhalten.

statuspending, completed, failed
bypass.matches[].match_typeexact, variant, group
bypass.matches[].timingjoined_after_submission, already_employed, not_determinable
bypass.matches[].confidenceconfirmed, likely, needs_review
plan.codefree, starter, growth, custom
plan.cyclemonthly, annual, null

Fehler

Antworten außerhalb von 2xx verwenden application/problem+json (RFC 9457).

Status

Wann

401

Fehlender oder ungültiger API-Schlüssel.

402

Credits aufgebraucht (<code>insufficient-credits</code>). Ein erneuter Versuch hilft erst nach Aufladen oder Upgrade.

404

Unbekannte Prüfungs-ID oder falscher Partner.

422

Fehlende Identitätskombination, fehlende Vorstellungen oder fehlende Erfahrung ohne profile_urls.

429

Ratenlimit überschritten (<code>rate-limit-exceeded</code>). <code>Retry-After</code> beachten, dann erneut versuchen.

500

Die Prüfung konnte nicht gestartet oder abgeschlossen werden.

Beispiel einer Fehlerantwort

{
  "type": "https://intelligence.tietalent.com/errors/invalid-request",
  "title": "Unprocessable Entity",
  "status": 422,
  "detail": "Provide a corporate email, or first_name and last_name together with company, employer_website or profile_urls, or a personal email with company or employer_website, or employer_website with role."
}

Ratenbegrenzung und Versionierung

Ratenbegrenzung

Ihr Tarif legt fest, wie schnell Sie die API aufrufen dürfen, in Anfragen pro Minute: Free 10, Starter 60, Growth 300. Bei einem Custom-Tarif wird das Limit mit Ihnen vereinbart. Eine Einheit ist eine Arbeitseinheit, ein Batch verbraucht also eine pro Kandidat. Candidate Intelligence, Talent Update, Bypass Monitor und die CSV-Anreicherung teilen sich dieses eine Kontingent. Erfolgreiche Antworten und 429-Antworten enthalten RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset; ein 429 ergänzt Retry-After (Sekunden). Stufen Sie exponentiell mit Jitter zurück. Die vollständige Referenz finden Sie unter Candidate Intelligence › Ratenlimits. Credits sind ein getrennter Kontrollmechanismus: Sie messen, wie viel Sie verbrauchen dürfen, nicht wie schnell.

Retry-After: 42

Versionierung

Die Version steht im Pfad (/v1). Zusätzliche Felder (einschließlich credits und plan) können ohne Versionswechsel hinzukommen.

Webhooks

Zustellung mindestens einmal. Handler müssen bezogen auf die Ereignis-id idempotent sein. Betrachten Sie GET /api/v1/bypass-checks/{id} jederzeit als maßgeblich.

Webhook-Endpunkte werden beim Onboarding als Partner eingerichtet.

Ereignistypen

bypass_check_readyDie Bypass-Prüfung wurde erfolgreich abgeschlossen.
bypass_check_failedDie Bypass-Prüfung ist fehlgeschlagen. Enthält error_code in data.

Signatur prüfen

Jede Zustellung trägt einen X-CI-Signature-Header: t=&lt;unix&gt;,v1=&lt;hmac-sha256&gt; über "{t}.{raw_body}", HMAC-SHA256 mit Ihrem whsec_...-Geheimnis. Gleiches Verfahren wie bei Candidate Intelligence und Talent Update.

X-CI-Signature: t=<unix>,v1=<hmac-sha256>

# Signed over "{t}.{raw_body}". Reject timestamps older than five minutes.

Die Nutzlast enthält result_url, bypass_check_id und candidate_id. Holen Sie das vollständige Ergebnis über einen authentifizierten GET-Aufruf.

api_environment entspricht der Bezeichnung des API-Schlüssels, mit dem der Lauf authentifiziert wurde (Production, Staging oder Test).

bypass_check_ready

{
  "id": "evt_01JDABC",
  "type": "bypass_check_ready",
  "created_at": "2026-08-28T12:58:12.441Z",
  "api_environment": "Production",
  "data": {
    "candidate_id": "cand-9911",
    "status": "completed",
    "result_url": "https://intelligence.tietalent.com/api/v1/bypass-checks/bc_01JCXY",
    "bypass_check_id": "bc_01JCXY"
  }
}

bypass_check_failed

{
  "id": "evt_01JDABD",
  "type": "bypass_check_failed",
  "created_at": "2026-08-28T12:58:15.441Z",
  "api_environment": "Production",
  "data": {
    "candidate_id": "cand-9911",
    "status": "failed",
    "result_url": "https://intelligence.tietalent.com/api/v1/bypass-checks/bc_01JCXY",
    "bypass_check_id": "bc_01JCXY",
    "error_code": "internal_error"
  }
}

Bekannte Grenzen

Diese Grenzen zu kennen sorgt für die richtigen Erwartungen.

  • Eine Prüfung meldet, was Ihrer Kandidatin oder Ihrem Kandidaten zugeordnet werden kann. Lässt sich die Identität nicht bestätigen, bleibt das Profil leer; die von Ihnen übermittelten Unternehmen werden dennoch unabhängig geprüft.
  • Der Abgleich von Unternehmen nutzt eine unscharfe Namensauflösung; match_type gibt die Qualität der Übereinstimmung an.
  • Fehlt submitted_at oder der Beschäftigungsbeginn, lautet timing not_determinable.
  • Ein Arbeitgeber, der bereits in Ihrer experience-Liste steht, wird dennoch gemeldet, denn Sie könnten ihn erst nach dem Eintritt erfasst haben. Er wird als needs_review zurückgegeben, sofern die Daten nicht zeigen, dass die Person das Unternehmen verlassen hat und nach Ihrer Vorstellung erneut eingetreten ist; dann wird er normal bewertet. Gemeldet werden ausschließlich Unternehmen aus Ihrer submissions-Liste.
  • Eine Prüfung mit bypass.detected: false bedeutet, dass kein neuer Arbeitgeber zu einer Vorstellung passt, nicht dass die Person nicht eingestellt wurde.
  • Maximal 100 Vorstellungen und 40 Erfahrungseinträge pro Person; 50 Personen pro Stapelvorberechnung.

Partnerprogramm

Starten Sie mit der Bypass-Monitor-Integration

Fragen Sie den Zugang an, und wir aktivieren Ihre Partner-API-Zugangsdaten für die Bypass-Überwachung.

Partnerschaften kontaktieren