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:readandorders:writescopes (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.
Checkpoint
The status progresses through: RECEIVED → ACCEPTED → IN_PROGRESS → COMPLETED. 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.
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}`);
}
}
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