Back to integrations

Partner API

Partner Literacy Suite API

Public guide for technology partners · Last updated August 29, 2026

Show — media catalog and short-lived delivery URLs. Ask — plan-grounded Binny Q&A with citations (requires chat_v1 entitlement).

Literacy Complete — Binny Chat API

Plan-grounded Q&A for mapped employers uses the same Bearer keys and externalEmployerId model as media. Full endpoint documentation is in sections 6–7 below. Requires chat_v1 on your API key — contact support to enable your design-partner sandbox.

Request chat_v1 sandbox access

How to get started

Request a sandbox from /integrations. BenefitsInteractive issues a test key, maps your externalEmployerId values, and provides your base URL. This page is the public contract only — it does not contain credentials.

1. Overview

BenefitsInteractive is the benefits literacy layer on top of HR, payroll, and enrollment systems. Partners embed approved media and optional plan-grounded Q&A in their own UX. BI remains the system of record for creation, approval, publishing, and delivery authorization.

Show (media) — controlled delivery means:

  1. Catalog responses contain metadata only (no playback URLs).
  2. Delivery responses mint an expiring URL when the partner is ready to play or download.
  3. Partners never receive durable CDN URLs in catalog responses.

Ask (Binny chat) — plan-grounded Q&A means:

  1. Answers are grounded in the employer's uploaded benefits documents with citations.
  2. Partners pass an opaque externalUserId; BI stores only a hashed identifier for metering.
  3. Employees must accept an educational disclaimer in your UI before the first question (disclaimerAccepted: true).

This API does not:

  • Process enrollment transactions or carrier feeds
  • Sync employee identity (SCIM, SSO passthrough)
  • Accept writeback (completions, analytics into BI)
  • Allow asset authoring or publishing
  • Answer generic HR or handbook questions (benefits corpus only)

2. Authentication

Every request must include:

Authorization: Bearer bi_live_<secret>
Content-Type: application/json
EnvironmentKey prefix
Productionbi_live_
Sandboxbi_test_

Capabilities (per partner / API key)

CapabilityEnables
media_v1Video + audio catalog and delivery
media_v2Slides + infographic PDF delivery
chat_v1Binny plan-grounded Q&A (sections 6–7)

Secrets are shown once at issuance. Store them securely. Revoked or unknown keys return 401 with code invalid_api_key. Missing capability → 403 (forbidden).

3. Base URL & versioning

Production and sandbox base URLs are provided during onboarding (for example https://app.benefitsinteractive.com).

v1 routes are prefixed with /api/integrations/v1 (media and chat). Breaking changes increment the path version. Optional JSON fields may be added without a version bump.

v2 (/api/integrations/v2) adds slides and infographic PDF delivery; v1 remains video + audio only.

4. Media endpoints

4.1 List media for an employer

GET /api/integrations/v1/groups/{externalEmployerId}/media

Path: externalEmployerId — your employer id (mapped at onboarding).

Query: limit (default 25, max 50), cursor, kinds (default video,audio), locale (optional BCP 47).

{
  "externalEmployerId": "acme-corp-2026",
  "groupId": "WC0126",
  "items": [
    {
      "learningResourceId": 1042,
      "kind": "video",
      "title": "Your 2026 Medical Plan Overview",
      "subtitle": "Plain-language walkthrough",
      "category": "Medical",
      "locale": null,
      "updatedAt": "2026-06-15T18:22:11.000Z",
      "videoProjectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "audioVariants": []
    }
  ],
  "nextCursor": null
}

Catalog items never include deliveryUrl or long-lived CDN URLs.

4.2 Get a single media item

GET /api/integrations/v1/media/{learningResourceId}?externalEmployerId={externalEmployerId}

externalEmployerId is required for entitlement checks.

4.3 Mint a delivery URL

POST /api/integrations/v1/media/{learningResourceId}/delivery
{
  "externalEmployerId": "acme-corp-2026",
  "variant": "summary"
}

For audio, variant is summary or deep. Omit variant for video.

{
  "learningResourceId": 1042,
  "kind": "video",
  "variant": null,
  "deliveryUrl": "https://example.cdn/embed/…",
  "expiresAt": "2026-07-07T01:20:00.000Z",
  "contentType": "text/html",
  "deliveryMode": "embed"
}
  • Default TTL is 300 seconds from mint time.
  • Mint when the user starts playback — not when listing the catalog.
  • Do not persist deliveryUrl; store learningResourceId + externalEmployerId instead.
  • If expired, mint again with a new POST.

5. Media kinds

kindDelivery
videoShort-lived embed URL
audioShort-lived download / stream URL
slides / infographicv2 — short-lived PDF URL

Only published, assigned media for the mapped employer is deliverable. Drafts are never exposed.

6. Binny Chat API

Requires chat_v1 on your partner record and API key. Answers are grounded in the employer's benefits document corpus — not open-web search.

6.1 Ask a question

POST /api/integrations/v1/groups/{externalEmployerId}/chat
Idempotency-Key: <uuid>   (recommended)
X-Request-Id: <uuid>      (optional)
{
  "question": "What is my in-network deductible on the PPO?",
  "externalUserId": "partner-worker-abc123opaque",
  "disclaimerAccepted": true,
  "disclaimerVersion": "v1",
  "sessionId": "optional-uuid-for-multi-turn",
  "chatHistory": [
    { "role": "user", "content": "Do we have an HSA?" },
    { "role": "assistant", "content": "Yes — the HDHP option includes an HSA..." }
  ]
}
FieldProductionNotes
questionRequiredMax 500 characters
externalUserIdRequiredOpaque worker id; hashed at rest (not stored raw)
disclaimerAcceptedRequiredMust be true — show disclaimer in your UI first
chatHistoryOptionalLast 6 turns; roles user / assistant

Sandbox (bi_test_): externalUserId may be omitted.

{
  "answer": "Based on your 2026 medical plan documents, the PPO in-network deductible is $1,500 per person...",
  "citations": [
    { "source": "2026 Medical SBC.pdf", "resourceId": 1042 }
  ],
  "sessionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "disclaimer": "Educational summary based on employer-provided plan documents. Not legal, tax, or medical advice."
}

With Idempotency-Key, identical requests replay the cached response for 24 hours (X-Idempotency-Replay: true).

7. Chat limits & webhooks

7.1 Get limits and usage

GET /api/integrations/v1/groups/{externalEmployerId}/chat-limits
{
  "externalEmployerId": "acme-corp-2026",
  "groupId": "WC0126",
  "limits": {
    "dailyQuestionCap": 500,
    "monthlyQuestionCap": 10000,
    "dailySpendUsdCap": 150,
    "monthlySpendUsdCap": 2000
  },
  "usage": {
    "today": { "questions": 42, "costUsd": 0.18 },
    "monthToDate": { "questions": 1203, "costUsd": 4.92 }
  }
}

7.2 Update per-employer limits

PUT /api/integrations/v1/groups/{externalEmployerId}/chat-limits
{
  "dailyQuestionCap": 750,
  "monthlyQuestionCap": 15000,
  "dailySpendUsdCap": 200,
  "monthlySpendUsdCap": 3000,
  "oeUpliftUntil": "2026-11-30T23:59:59.000Z",
  "oeDailyQuestionCap": 1500
}

All fields optional; omitted fields are unchanged. Open Enrollment uplift fields are optional.

7.3 Webhooks (Growth+ tier)

When configured, BI sends HMAC-signed HTTPS POSTs for usage alerts: chat.usage_warning, chat.cap_reached, chat.cap_reset.

Verify header X-BI-Signature: t={unix},v1={hmac} over {timestamp}.{body} using your webhook secret.

8. Errors

{
  "error": {
    "code": "forbidden",
    "message": "You do not have access to this employer."
  }
}

Prefer the stable code for programmatic handling.

HTTPcodeWhen
400invalid_requestMalformed JSON, missing fields, or invalid chat body
401invalid_api_keyMissing, invalid, or revoked key
403forbiddenValid key but not entitled (e.g. missing chat_v1)
404unknown_group / not_found / not_publishedUnmapped employer or unavailable asset
409unsupported_kindKind not enabled for partner
429rate_limitedToo many requests or chat cap exceeded
500internal_errorUnexpected server error

9. Rate limits

Media (defaults per API key)

  • Catalog + detail: 120 requests / minute
  • Delivery mint: 60 requests / minute

Chat (layered — illustrative production defaults)

  • User burst: 5 questions / minute
  • Employer burst: 30 questions / minute
  • API key burst: 60 questions / minute
  • User daily: 75 questions / day
  • Employer daily: 500 questions / day (overridable via chat-limits)

When limited, expect 429 with Retry-After. Limits may be adjusted at onboarding by tier.

10. Onboarding

  1. Request sandbox via /integrations.
  2. Receive test key + employer mappings for a pilot group.
  3. Implement media: catalog → detail → delivery → playback (v1).
  4. Request chat_v1 for Literacy Complete; implement chat + limits.
  5. Complete security review (no durable CDN URLs; server-side API keys only).
  6. Go live with a production key and production mappings.

Support: support@benefitsinteractive.app