AI92 sudah tayang - peluncuran awal global kami sedang berlangsung: platform lengkap terbuka di seluruh dunia selama 30 hari pertama.
Menu dokumentasi

Dokumentasi pengembang ini saat ini hanya tersedia dalam bahasa Inggris. Perilaku kode dan API identik di setiap wilayah.

Contacts API

The Contact Finder service lets you search a B2B warehouse, reveal contact PII, verify deliverability, enrich records, run bulk discovery, and look up companies. All routes are served under /v1/contacts and backed by module-H.

Authentication

Every request must carry a tenant API key as a Bearer token:

Authorization: Bearer ai92_live_<key>     # production
Authorization: Bearer ai92_test_<key>     # sandbox

OAuth 2.0 access tokens (Authorization: Bearer eyJ…) are also accepted. Mutating requests support the Idempotency-Key header.

Credit costs at a glance

EndpointCost
GET /v1/contacts/searchFree
POST /v1/contacts/reveal3 cr (email) / 5 cr (email+phone)
POST /v1/contacts/verify1 cr (free if inconclusive)
POST /v1/contacts/enrich11 cr
POST /v1/contacts/bulk300 cr per 100 (rounded up)
GET /v1/contacts/{company_id}2 cr

GET /v1/contacts/search

Cost: Free

Free warehouse search across the contact database, scoped to a brand.

Auth: Bearer (tenant key or OAuth token)

ParameterInTypeRequiredDescription
brand_idquerystringNoRestrict results to a brand. Verified against the account.
tagsquerystringNoComma-separated tag filter.
emailquerystringNoFilter by exact email.
limitqueryintegerNoPage size. Default 50.
offsetqueryintegerNoPage offset. Default 0.

Request

bash
curl https://api.ai92.ai/v1/contacts/search?brand_id=acme&limit=25 \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "total": 1284,
  "limit": 25,
  "offset": 0,
  "contacts": [
    {
      "person_id": "p_8f21a6",
      "full_name": "Jordan Vega",
      "title": "VP Marketing",
      "company": "Acme Corp",
      "tags": ["decision-maker", "saas"]
    }
  ]
}

POST /v1/contacts/reveal

Cost: 3 credits (mode=email) · 5 credits (mode=email_phone)

Reveal a contact's PII by person_id. email mode returns the email only; email_phone adds phone. Credits are deducted only after a successful reveal.

Auth: Bearer

FieldTypeRequiredDescription
person_idstringYesThe warehouse person id to reveal.
modestringNoemail (default, 3 cr) or email_phone (5 cr).
include_phonebooleanNoLegacy alias for mode=email_phone. Default false.

Request

bash
curl https://api.ai92.ai/v1/contacts/reveal \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"person_id": "p_8f21a6", "mode": "email_phone"}'

Response 200 OK

json
{
  "person_id": "p_8f21a6",
  "email": "[email protected]",
  "phone": "+1-415-555-0173",
  "full_name": "Jordan Vega",
  "title": "VP Marketing",
  "company": "Acme Corp"
}

Errors

StatusCodeWhen
422INVALID_REVEAL_MODEmode is not email or email_phone.
402INSUFFICIENT_CREDITSBalance below the reveal cost.

POST /v1/contacts/verify

Cost: 1 credit — free when the verdict is inconclusive (status=unknown)

Email deliverability check (ZeroBounce via module-H). Charged 1 credit only for a definitive verdict.

Auth: Bearer

FieldTypeRequiredDescription
emailstringYesThe email address to verify.

Request

bash
curl https://api.ai92.ai/v1/contacts/verify \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response 200 OK

json
{
  "email": "[email protected]",
  "status": "deliverable",
  "sub_status": "none",
  "credits_consumed": 1
}

When the verdict is inconclusive, status is "unknown" and credits_consumed is 0.

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 1 credit.

POST /v1/contacts/enrich

Cost: 11 credits

Full contact enrichment (email + phone + firmographics) via module-H.

Auth: Bearer

FieldTypeRequiredDescription
person_idstringYesThe person id to enrich.
fieldsstring[]NoSpecific fields to enrich. Defaults to all.

Request

bash
curl https://api.ai92.ai/v1/contacts/enrich \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"person_id": "p_8f21a6", "fields": ["email", "phone", "company_size"]}'

Response 200 OK

json
{
  "person_id": "p_8f21a6",
  "email": "[email protected]",
  "phone": "+1-415-555-0173",
  "company": "Acme Corp",
  "company_size": "201-500",
  "industry": "Software",
  "linkedin_url": "https://linkedin.com/in/jvega"
}

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 11 credits.

POST /v1/contacts/bulk

Cost: 300 credits per 100 requested records (rounded up per 100)

Bulk contact discovery via module-H. filters must include the discovery keys the backend requires (e.g. vertical, geography). Cost = ceil(limit / 100) * 300.

Auth: Bearer

FieldTypeRequiredDescription
filtersobjectYesDiscovery filter keys (e.g. vertical, geography).
limitintegerNoRecords to discover. Default 100. Range 1010000.

Request

bash
curl https://api.ai92.ai/v1/contacts/bulk \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"vertical": "fintech", "geography": "US"}, "limit": 200}'

Response 200 OK

json
{
  "discovered": 200,
  "contacts": [
    { "person_id": "p_aa01", "full_name": "Lee Park", "title": "CFO", "company": "Northwind" }
  ],
  "credits_charged": 600
}

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below the computed cost.

GET /v1/contacts/{company_id}

Cost: 2 credits

Look up a company by id from the module-H warehouse.

Auth: Bearer

ParameterInTypeRequiredDescription
company_idpathstringYesWarehouse company id.

Request

bash
curl https://api.ai92.ai/v1/contacts/co_4521 \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "company_id": "co_4521",
  "name": "Acme Corp",
  "domain": "acme.com",
  "industry": "Software",
  "employee_count": 420,
  "hq_location": "San Francisco, CA"
}

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 2 credits.