API ONE Documentation

Everything you need to integrate B2B data intelligence into your product.

Quickstart

Get your first API response in under 2 minutes.

1. Get your API key

Sign in to your dashboard and create a new API key. You get 100 free credits on signup — no credit card required.

2. Make your first request

bash
curl -X POST https://api.apione.store/v1/company \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "stripe.com"}'

3. Parse the response

json
{
  "name": "Stripe",
  "domain": "stripe.com",
  "confidence": "94%",
  "industry": "Financial Technology",
  "business_model": "B2B SaaS + Payments",
  "company_size": "5,001–10,000",
  "headquarters": "San Francisco, CA",
  "tech_stack": ["AWS", "Ruby", "React", "PostgreSQL", "Kafka"],
  "growth_signals": [
    "Launched Stripe Climate in 2021",
    "Expanded to 46 new countries in 2023",
    "Raised $6.5B Series I at $50B valuation"
  ]
}

Authentication

All API requests require an Authorization header with your API key as a Bearer token.

bash
Authorization: Bearer ak_live_your_api_key_here

Your API key is hashed with SHA-256 before storage. The plaintext is never stored on our servers. If you lose your key, revoke it and create a new one from the dashboard.

Key security best practices

Never expose your API key in client-side code, public repositories, or logs. Use environment variables to store keys in your application.

API Reference

Base URL: https://api.apione.store/v1

EndpointDescriptionCredits
POST /v1/companyEnrich a company by domain5 credits
POST /v1/email/findFind email candidates3 credits
POST /v1/email/verifyVerify email deliverability1 credits
POST /v1/peopleEnrich a person by name + domain5 credits
POST /v1/signalsGet growth signals for a company3 credits
POST /v1/techstackDetect technology stack3 credits

Company Enrichment

Enrich any company by domain. Returns industry, size, headquarters, tech stack, business model, and growth signals.

Request

bash
curl -X POST https://api.apione.store/v1/company \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "notion.so"}'

Response fields

json
{
  "name": "string",
  "domain": "string",
  "confidence": "string (e.g. '94%')",
  "industry": "string",
  "business_model": "string",
  "company_size": "string",
  "headquarters": "string",
  "tech_stack": ["string"],
  "growth_signals": ["string"]
}

Email Finder

Find professional email candidates for any person at any company. Returns 3–5 candidates with confidence scores.

Request

bash
curl -X POST https://api.apione.store/v1/email/find \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"first_name": "David", "last_name": "Chen", "domain": "stripe.com"}'

Response

json
{
  "candidates": [
    {"email": "david.chen@stripe.com", "confidence": 89},
    {"email": "d.chen@stripe.com", "confidence": 71},
    {"email": "davidchen@stripe.com", "confidence": 43}
  ]
}

Email Verification

Verify the deliverability of any email address. Checks MX records, mailbox existence, catch-all domains, and disposable providers.

Request

bash
curl -X POST https://api.apione.store/v1/email/verify \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "david.chen@stripe.com"}'

Response

json
{
  "status": "deliverable",
  "mx_valid": true,
  "mailbox_exists": true,
  "is_role_address": false,
  "is_disposable": false,
  "is_catch_all": false,
  "recommended_action": "send"
}

People Enrichment

Enrich a person by name and company domain. Returns title, seniority, department, career stage, and likely skills.

Request

bash
curl -X POST https://api.apione.store/v1/people \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sarah Kim", "domain": "notion.so"}'

Response

json
{
  "title": "Director of Product",
  "seniority": "Director",
  "department": "Product",
  "career_stage": "Mid-senior",
  "years_experience": "8 years",
  "manages_team": true,
  "skills": ["Product strategy", "Roadmapping", "Agile", "OKRs"],
  "confidence": "81%"
}

curl Examples

Company enrichment

bash
curl -X POST https://api.apione.store/v1/company \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "stripe.com"}'

Email finder

bash
curl -X POST https://api.apione.store/v1/email/find \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"first_name": "Jane", "last_name": "Smith", "domain": "salesforce.com"}'

Email verification

bash
curl -X POST https://api.apione.store/v1/email/verify \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane.smith@salesforce.com"}'

People enrichment

bash
curl -X POST https://api.apione.store/v1/people \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Alex Johnson", "domain": "hubspot.com"}'

Error Codes

CodeMeaningAction
401Invalid or missing API keyCheck your Authorization header
402Insufficient creditsUpgrade your plan or top up credits
422Invalid request bodyCheck required fields in the request
429Rate limit exceededSlow down requests or upgrade plan
500Internal server errorRetry after a few seconds

Rate Limits

PlanRequests / minuteConcurrent
Free301
Starter603
Growth12010
ScaleCustomCustom

MCP Agent Setup — C1

ApiOne exposes all 11 tools as a native Model Context Protocol (MCP) server. Any AI agent framework that supports MCP — LangChain, CrewAI, AutoGPT, OpenAI function calling — can call ApiOne without custom integration code.

Endpoints

bash
GET  https://apione.store/mcp           # capability manifest
GET  https://apione.store/mcp/tools    # tool definitions (MCP schema)
GET  https://apione.store/mcp/sse      # SSE stream (X-API-Key required)
POST https://apione.store/mcp/tools/call  # execute a tool

Connect in LangChain

python
from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "apione": {
        "url": "https://apione.store/mcp/sse",
        "transport": "sse",
        "headers": {"X-API-Key": "ak_live_YOUR_KEY"}
    }
})

tools = await client.get_tools()
# → [apione_company_enrich, apione_email_find, ...]

Call a tool directly

bash
curl -X POST https://apione.store/mcp/tools/call \
  -H "X-API-Key: ak_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "apione_company_enrich",
    "arguments": { "domain": "stripe.com" }
  }'

MCP Response format

json
{
  "content": [{ "type": "text", "text": "{ name: 'Stripe', industry: ... }" }],
  "isError": false,
  "_meta": {
    "tool": "apione_company_enrich",
    "credits_used": 5,
    "credits_remaining": 95,
    "latency_ms": 430
  }
}

Available tools

Tool nameEquivalent endpointCredits
apione_company_enrich/api/v1/companies/enrich5
apione_people_enrich/api/v1/people/enrich5
apione_email_find/api/v1/emails/find3
apione_email_verify/api/v1/emails/verify1
apione_tech_detect/api/v1/tech/detect4
apione_signals/api/v1/signals3

CRM Auto-Enrichment — C2

Connect your HubSpot account once. ApiOne automatically enriches every new company and contact in your CRM — no recurring developer work required. Results are written to apione_* custom properties.

Step 1 — Connect HubSpot

Get the OAuth URL for your account. Open it in a browser to authorise ApiOne.

bash
GET https://apione.store/api/v1/crm/hubspot/connect?userId=YOUR_USER_ID
# → { "oauth_url": "https://app.hubspot.com/oauth/authorize?..." }

Step 2 — Check connection status

bash
GET https://apione.store/api/v1/crm/hubspot/status/YOUR_USER_ID
# → {
#     "connected": true,
#     "connections": [{
#       "id": 1,
#       "provider": "hubspot",
#       "portalId": "12345678",
#       "lastSyncAt": "2026-04-28T12:00:00Z",
#       "totalEnriched": 142
#     }]
#   }

Properties written to HubSpot

PropertyExample valueCredits
apione_industryFinTech—
apione_company_size201-500—
apione_tech_stackSalesforce, HubSpot, AWS—
apione_signalsHiring SDRs | Series B raised—
apione_enriched_at2026-04-28T14:00:00Z—

Each company enrichment costs 5 credits, deducted from the API key you specified at connect time. The job runs every 15 minutes and only processes companies created in the last 24 hours.

Disconnect

bash
DELETE https://apione.store/api/v1/crm/:connectionId
# → { "success": true }

Signal Watch API — C3

Subscribe to real-time monitoring of any company or contact. When a signal is detected — a funding round, hiring surge, tech stack change, or leadership change — ApiOne POSTs an HMAC-signed webhook to your endpoint.

Create a watch

bash
curl -X POST https://apione.store/api/v1/watch \
  -H "X-API-Key: ak_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_type":     "company",
    "entity_domain":   "stripe.com",
    "signal_types":    ["hiring_surge", "funding_event", "tech_stack_change"],
    "webhook_url":     "https://your.app/signals",
    "check_frequency": "daily",
    "label":           "Stripe — target account"
  }'
json
{
  "id": 42,
  "webhook_secret": "a3f9b2c1d4e5...",
  "next_check_at":  "2026-04-29T14:00:00Z",
  "_meta": {
    "credit_cost_per_check": 3,
    "message": "Watch created. We check daily and POST to webhook_url on signals."
  }
}

Webhook payload

json
// POST to your webhook_url
// Header: X-ApiOne-Signature: sha256=<hmac>

{
  "event":         "signal_detected",
  "watch_id":      42,
  "entity_domain": "stripe.com",
  "signals": [
    {
      "type":        "hiring_surge",
      "title":       "Engineering hiring spike",
      "description": "Stripe posted 18 new engineering roles this week",
      "strength":    "strong",
      "confidence":  89,
      "detected_at": "2026-04-28"
    }
  ],
  "timestamp":   "2026-04-28T14:02:11Z",
  "api_version": "v1"
}

Verify the signature

python
import hmac, hashlib

def verify(secret: str, body: bytes, header_sig: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, header_sig)

Manage watches

bash
# List all watches
GET  /api/v1/watches

# Get watch + recent events
GET  /api/v1/watches/:id

# Pause a watch
PATCH /api/v1/watches/:id  { "is_active": false }

# Delete
DELETE /api/v1/watches/:id

Available signal types

Signal typeDescriptionCredit cost
hiring_surgeSignificant increase in open job postings1 per detection
funding_eventNew investment round announced1 per detection
tech_stack_changeNew technology added or removed1 per detection
leadership_changeC-suite or VP-level hire or departure1 per detection
expansionNew market, office, or product line1 per detection
product_launchNew product or major feature announced1 per detection