Skip to main content
Follow this guide to exercise the full Connect partner flow against the stub vendor in develop or staging. The stub is disabled in production.
Base URL: Examples use https://connect.humanly.io. Replace with https://api.dev.qualifi.hr if your partner integration uses the legacy domain — paths are identical.

Prerequisites

  1. A partner master API key with accounts scope (minted in Eucalyptus Connect Partners).
  2. Access to develop or staging (NODE_ENV must allow the stub vendor).
  3. A valid Humanly interview ID in the target org (for the stub order step).

Step 1 — Provision a customer account

Use your partner master key. Save accountId and customerApiKey from the response — the customer key is shown once on first provision.
export BASE='https://connect.humanly.io'
export PARTNER_MASTER_KEY='qapi_your_partner_master_key'
export EXTERNAL_ID="partner-customer-$(date +%s)"

curl -s -X POST "$BASE/connect/accounts" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $PARTNER_MASTER_KEY" \
  -H 'x-request-id: connect-quickstart-1' \
  -d "{
    \"externalId\": \"$EXTERNAL_ID\",
    \"name\": \"Acme Corp Quickstart\",
    \"timezone\": \"America/New_York\"
  }" | jq

export CUSTOMER_KEY='<customerApiKey from 201 response>'
Expected 201 Created with customerApiKey. See Account provisioning for idempotent reconnect and disconnect flows.

Step 2 — Connect the stub vendor

Switch to the customer API key (integrations scope).
# Requires BASE and CUSTOMER_KEY from Step 1
curl -s -X POST "$BASE/connect/stub/integrations" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $CUSTOMER_KEY" \
  -H 'x-request-id: connect-quickstart-2' \
  -d '{
    "config": {
      "apiKey": "stub-test-vendor-key"
    }
  }' | jq
Expected 201 with integrationId, type: StubVendor, and healthy: true. Details in Standardized vendor endpoints.

Step 3 — Health check

# Requires BASE and CUSTOMER_KEY from Step 1
curl -s "$BASE/connect/stub/health" \
  -H "x-api-key: $CUSTOMER_KEY" \
  -H 'x-request-id: connect-quickstart-3' | jq
Expected 200 with data.healthy: true. Platform liveness (no auth) is GET /connect/health.

Step 4 — Place a stub order

Requires a real interviewId UUID from the provisioned org.
# Requires BASE and CUSTOMER_KEY from Step 1
export INTERVIEW_ID='<humanly-interview-uuid>'
export ORDER_REF="stub-order-$(date +%s)"

curl -s -X POST "$BASE/connect/stub/order" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $CUSTOMER_KEY" \
  -H "x-request-id: connect-quickstart-4" \
  -d "{
    \"requesterRefId\": \"$ORDER_REF\",
    \"candidateId\": \"candidate-$ORDER_REF\",
    \"firstName\": \"Jane\",
    \"lastName\": \"Doe\",
    \"email\": \"jane.doe@example.com\",
    \"interviewId\": \"$INTERVIEW_ID\",
    \"resultsURL\": \"https://example.com/results\"
  }" | jq
Expected 201 with invite URL in the Connect order envelope.

Next steps

Permission scopes

When to use accounts vs integrations keys

Error envelope

Parse Connect error codes

Request tracing

Correlate calls with x-request-id