Skip to content

Enrichment Quick Start

Create your first enrichment order and get results in 4 steps.

Time required: ~5 minutes (excluding enrichment processing time)


Prerequisites

  • [ ] API key with orders:read and orders:write scopes (create one in Settings > Developer > API Keys)
  • [ ] Base URL: https://api.openprospect.io/api/v1

Step 1: Create an Order

Submit a single company for enrichment. Replace YOUR_API_KEY with your actual key.

curl -X POST "https://api.openprospect.io/api/v1/orders/" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My First Enrichment",
    "features": ["COMPANY_DATA", "CONTACTS"],
    "profile_name": "Quick Start Test",
    "companies": [
      {
        "company_name": "Stripe",
        "external_id": "test-001",
        "website_url": "https://stripe.com"
      }
    ]
  }'
import httpx

API_KEY = "lnc_live_your_api_key_here"
BASE_URL = "https://api.openprospect.io/api/v1"

response = httpx.post(
    f"{BASE_URL}/orders/",
    json={
        "title": "My First Enrichment",
        "features": ["COMPANY_DATA", "CONTACTS"],
        "profile_name": "Quick Start Test",
        "companies": [
            {
                "company_name": "Stripe",
                "external_id": "test-001",
                "website_url": "https://stripe.com",
            }
        ],
    },
    headers={"Authorization": f"Bearer {API_KEY}"},
)

data = response.json()
print(f"Order ID: {data['order_id']}")
print(f"Status: {data['status']}")
const API_KEY = "lnc_live_your_api_key_here";
const BASE_URL = "https://api.openprospect.io/api/v1";

const response = await fetch(`${BASE_URL}/orders/`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "My First Enrichment",
    features: ["COMPANY_DATA", "CONTACTS"],
    profile_name: "Quick Start Test",
    companies: [
      {
        company_name: "Stripe",
        external_id: "test-001",
        website_url: "https://stripe.com",
      },
    ],
  }),
});

const data = await response.json();
console.log(`Order ID: ${data.order_id}`);
console.log(`Status: ${data.status}`);
const API_KEY = "lnc_live_your_api_key_here";
const BASE_URL = "https://api.openprospect.io/api/v1";

interface CreateOrderResponse {
  order_id: string;
  status: string;
  company_count: number;
  estimated_cost: { total: number; currency: string } | null;
  message: string;
}

const response = await fetch(`${BASE_URL}/orders/`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "My First Enrichment",
    features: ["COMPANY_DATA", "CONTACTS"],
    profile_name: "Quick Start Test",
    companies: [
      {
        company_name: "Stripe",
        external_id: "test-001",
        website_url: "https://stripe.com",
      },
    ],
  }),
});

const data: CreateOrderResponse = await response.json();
console.log(`Order ID: ${data.order_id}`);
console.log(`Status: ${data.status}`);
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

var apiKey = "lnc_live_your_api_key_here";
var baseUrl = "https://api.openprospect.io/api/v1";

var order = new
{
    title = "My First Enrichment",
    features = new[] { "COMPANY_DATA", "CONTACTS" },
    profile_name = "Quick Start Test",
    companies = new[]
    {
        new
        {
            company_name = "Stripe",
            external_id = "test-001",
            website_url = "https://stripe.com"
        }
    }
};

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", apiKey);

var json = JsonSerializer.Serialize(order);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{baseUrl}/orders/", content);

var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);

Expected response (202):

{
  "order_id": "4f767705-03a2-4e91-a3e8-1ec3f9dea865",
  "status": "RECEIVED",
  "company_count": 1,
  "estimated_cost": null,
  "message": "Order received. Awaiting admin review."
}

Checkpoint

You should see "status": "RECEIVED" and an order_id. Save the order_id for the next steps.


Step 2: Check Order Status

Replace ORDER_ID with the order_id from Step 1.

curl -X GET "https://api.openprospect.io/api/v1/orders/ORDER_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
order_id = "4f767705-03a2-4e91-a3e8-1ec3f9dea865"  # from Step 1

response = httpx.get(
    f"{BASE_URL}/orders/{order_id}",
    headers={"Authorization": f"Bearer {API_KEY}"},
)
data = response.json()
print(f"Status: {data['status']}")
const orderId = "4f767705-03a2-4e91-a3e8-1ec3f9dea865"; // from Step 1

const response = await fetch(`${BASE_URL}/orders/${orderId}`, {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const data = await response.json();
console.log(`Status: ${data.status}`);
const orderId = "4f767705-03a2-4e91-a3e8-1ec3f9dea865"; // from Step 1

const response = await fetch(`${BASE_URL}/orders/${orderId}`, {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const data = await response.json();
console.log(`Status: ${data.status}`);
var orderId = "4f767705-03a2-4e91-a3e8-1ec3f9dea865"; // from Step 1

var response = await client.GetAsync($"{baseUrl}/orders/{orderId}");
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);

Checkpoint

The status progresses through: RECEIVEDACCEPTEDIN_PROGRESSCOMPLETED. When you see COMPLETED, proceed to Step 3.

Processing Time

Enrichment is not instant. Your order goes through admin review and automated enrichment. Check back periodically, or set up a webhook to get notified.


Step 3: Get Results

Once the status is COMPLETED, retrieve your enriched data.

curl -X GET "https://api.openprospect.io/api/v1/orders/ORDER_ID/results" \
  -H "Authorization: Bearer YOUR_API_KEY"
response = httpx.get(
    f"{BASE_URL}/orders/{order_id}/results",
    headers={"Authorization": f"Bearer {API_KEY}"},
)
data = response.json()

for company in data["items"]:
    print(f"Company: {company['name']}")
    print(f"  Source ID: {company['source_id']}")
    print(f"  Description: {company['description'][:100]}...")
    for prospect in company["prospects"]:
        print(f"  Contact: {prospect['first_name']} {prospect.get('last_name', '')}")
        print(f"    Title: {prospect.get('job_title', 'N/A')}")
        print(f"    Email: {prospect.get('email', 'N/A')}")
const response = await fetch(`${BASE_URL}/orders/${orderId}/results`, {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const data = await response.json();

for (const company of data.items) {
  console.log(`Company: ${company.name}`);
  console.log(`  Source ID: ${company.source_id}`);
  for (const prospect of company.prospects) {
    console.log(`  Contact: ${prospect.first_name} ${prospect.last_name}`);
    console.log(`    Title: ${prospect.job_title}`);
    console.log(`    Email: ${prospect.email}`);
  }
}
interface ResultsResponse {
  items: {
    name: string;
    source_id: string | null;
    description: string | null;
    prospects: {
      first_name: string;
      last_name: string | null;
      job_title: string | null;
      email: string | null;
    }[];
  }[];
  total: number;
  has_more: boolean;
}

const response = await fetch(`${BASE_URL}/orders/${orderId}/results`, {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const data: ResultsResponse = await response.json();

for (const company of data.items) {
  console.log(`Company: ${company.name} (source: ${company.source_id})`);
  for (const prospect of company.prospects) {
    console.log(`  ${prospect.first_name} ${prospect.last_name} - ${prospect.job_title}`);
  }
}
var response = await client.GetAsync($"{baseUrl}/orders/{orderId}/results");
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);

Checkpoint

You should see your company with enriched data: description, contacts with names and job titles, and the source_id matching your external_id from Step 1.


Next Steps

You have made your first enrichment order. Here is where to go next:

Enrichment Order Guide

Full reference: all features, webhook setup, error handling, and pagination.

Read Guide

Authentication

API key management, scopes, and security best practices.

Authentication Guide

Error Handling

Error codes, troubleshooting, and retry strategies.

Error Reference