Enrichment Quick Start¶
Create an enrichment order when you already know the companies you want OpenProspect to enrich.
Time required: About 5 minutes, excluding admin review and fulfillment.
Prerequisites¶
- An API key with
orders:write,orders:read,companies:read, andprospects:read. - The API key stored as
OPENPROSPECT_API_KEY. - A ready
profile_id. Create one with Search Profile Creation.
Step 1: Create or Reuse a Profile¶
The profile describes how OpenProspect should qualify and brief the companies. You can use the same profile for enrichment and discovery.
curl -sS -X POST "https://api.openprospect.io/api/v1/search-profile-creations" \
-H "Authorization: Bearer ${OPENPROSPECT_API_KEY}" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: profile-enrichment-quickstart-001" \
-d '{
"profile_name": "Payments software buyers",
"ideal_customer_profile": "B2B software companies that sell to finance teams",
"seller_offering": "Payment operations software",
"target_countries": ["US", "GB", "DE"],
"contact_roles": ["CFO", "Head of Finance"],
"output_language": "en"
}'
Poll the returned profile_creation_id until it returns SUCCEEDED, then save
the profile_id.
export OPENPROSPECT_PROFILE_CREATION_ID="f7a5a926-4d42-4e30-9f40-61e5da52f7aa"
curl -sS \
"https://api.openprospect.io/api/v1/search-profile-creations/${OPENPROSPECT_PROFILE_CREATION_ID}" \
-H "Authorization: Bearer ${OPENPROSPECT_API_KEY}"
Successful profile creation returns a reusable profile ID:
{
"profile_creation_id": "f7a5a926-4d42-4e30-9f40-61e5da52f7aa",
"status": "SUCCEEDED",
"profile_id": "8d6e39fd-6d73-4cc2-9612-6ffb41c84f29",
"error_code": null,
"error_message": null,
"created_at": "2026-06-30T10:00:00Z",
"started_at": "2026-06-30T10:00:01Z",
"finished_at": "2026-06-30T10:00:08Z"
}
Checkpoint: keep OPENPROSPECT_PROFILE_ID; every order references it.
Step 2: Create an Enrichment Order¶
POST /api/v1/orders
Enrichment orders require:
order_type: "ENRICHMENT"profile_idcompaniesfeaturesIdempotency-Key
Do not send briefing_quantity for enrichment. The API derives it from
companies.length.
curl -sS -X POST "https://api.openprospect.io/api/v1/orders" \
-H "Authorization: Bearer ${OPENPROSPECT_API_KEY}" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: enrichment-order-quickstart-001" \
-d '{
"order_type": "ENRICHMENT",
"title": "My first enrichment order",
"profile_id": "'"${OPENPROSPECT_PROFILE_ID}"'",
"features": ["COMPANY_DATA", "CONTACTS"],
"companies": [
{
"company_name": "Stripe",
"external_id": "crm-001",
"website_url": "https://stripe.com"
}
]
}'
import os
import httpx
api_key = os.environ["OPENPROSPECT_API_KEY"]
profile_id = os.environ["OPENPROSPECT_PROFILE_ID"]
response = httpx.post(
"https://api.openprospect.io/api/v1/orders",
headers={
"Authorization": f"Bearer {api_key}",
"Idempotency-Key": "enrichment-order-quickstart-001",
},
json={
"order_type": "ENRICHMENT",
"title": "My first enrichment order",
"profile_id": profile_id,
"features": ["COMPANY_DATA", "CONTACTS"],
"companies": [
{
"company_name": "Stripe",
"external_id": "crm-001",
"website_url": "https://stripe.com",
}
],
},
timeout=30.0,
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.openprospect.io/api/v1/orders", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPENPROSPECT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "enrichment-order-quickstart-001",
},
body: JSON.stringify({
order_type: "ENRICHMENT",
title: "My first enrichment order",
profile_id: process.env.OPENPROSPECT_PROFILE_ID,
features: ["COMPANY_DATA", "CONTACTS"],
companies: [
{
company_name: "Stripe",
external_id: "crm-001",
website_url: "https://stripe.com",
},
],
}),
});
if (!response.ok) {
throw new Error(`Enrichment order failed: ${response.status} ${await response.text()}`);
}
console.log(await response.json());
interface CreateOrderResponse {
order_id: string;
order_type: "DISCOVERY" | "ENRICHMENT";
status: "RECEIVED";
briefing_quantity: number;
estimated_cost: { total: number; currency: string } | null;
message: string;
}
const response = await fetch("https://api.openprospect.io/api/v1/orders", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPENPROSPECT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "enrichment-order-quickstart-001",
},
body: JSON.stringify({
order_type: "ENRICHMENT",
title: "My first enrichment order",
profile_id: process.env.OPENPROSPECT_PROFILE_ID,
features: ["COMPANY_DATA", "CONTACTS"],
companies: [{ company_name: "Stripe", external_id: "crm-001", website_url: "https://stripe.com" }],
}),
});
if (!response.ok) {
throw new Error(`Enrichment order failed: ${response.status} ${await response.text()}`);
}
const order = (await response.json()) as CreateOrderResponse;
console.log(order.order_id);
using System.Net.Http.Headers;
using System.Net.Http.Json;
var apiKey = Environment.GetEnvironmentVariable("OPENPROSPECT_API_KEY")
?? throw new InvalidOperationException("OPENPROSPECT_API_KEY is not set.");
var profileId = Environment.GetEnvironmentVariable("OPENPROSPECT_PROFILE_ID")
?? throw new InvalidOperationException("OPENPROSPECT_PROFILE_ID is not set.");
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
client.DefaultRequestHeaders.Add("Idempotency-Key", "enrichment-order-quickstart-001");
var payload = new
{
order_type = "ENRICHMENT",
title = "My first enrichment order",
profile_id = profileId,
features = new[] { "COMPANY_DATA", "CONTACTS" },
companies = new[]
{
new
{
company_name = "Stripe",
external_id = "crm-001",
website_url = "https://stripe.com"
}
}
};
var response = await client.PostAsJsonAsync("https://api.openprospect.io/api/v1/orders", payload);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Expected response:
{
"order_id": "4f767705-03a2-4e91-a3e8-1ec3f9dea865",
"order_type": "ENRICHMENT",
"status": "RECEIVED",
"briefing_quantity": 1,
"estimated_cost": null,
"message": "Order received. Awaiting admin review."
}
Save the order_id.
Checkpoint: keep the order_id; use it to poll status and fetch results.
Step 3: Check Order Status¶
curl -sS "https://api.openprospect.io/api/v1/orders/${ORDER_ID}" \
-H "Authorization: Bearer ${OPENPROSPECT_API_KEY}"
Wait for COMPLETED, then call:
curl -sS "https://api.openprospect.io/api/v1/orders/${ORDER_ID}/results" \
-H "Authorization: Bearer ${OPENPROSPECT_API_KEY}"
The source_id in results matches your submitted external_id when you
provide one.
Checkpoint: stop polling when the order is COMPLETED, REJECTED, FAILED,
or CANCELLED.