Quickstart — your first lead in 5 minutes
This guide takes you from an API key to your first successful lead submission. All you need is an API key and the Navigo domain.
Step 1. Get your API key
A Navigo admin issues the key for you (generated via the Management API). The key looks like this:
lp_live_7f2a91_r3vS6gG8-QzM5h...
:::tip Keep your key safe Treat the key like a password. Store it somewhere safe (for example, an environment variable) and never commit it to source control. An admin can view it again in the Navigo CRM if you lose your copy. :::
Store the key as an environment variable:
export NAVIGO_API_KEY="lp_live_7f2a91_r3vS6gG8-QzM5h..."
Step 2. Submit your first lead
/api/v1/public/leads/Copy the request below and replace the domain and key with your own:
- curl
- JavaScript
- Python
curl -X POST https://api.navigocrm.com/api/v1/public/leads/ \
-H "Authorization: Bearer $NAVIGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "lead_998123A",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone_number": "+1234567890",
"origin_zip": "90210",
"destination_zip": "10001",
"estimated_ship_date": "2026-06-15",
"overseas_type": "DOMESTIC",
"ship_via": "OPEN",
"vehicles": [
{"year": 2023, "make": "Tesla", "model": "Model S", "type": "CAR", "tariff": 1200, "deposit": 200, "vehicle_run": true}
]
}'
const res = await fetch("https://api.navigocrm.com/api/v1/public/leads/", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.NAVIGO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
external_id: "lead_998123A",
first_name: "John",
last_name: "Doe",
email: "john.doe@example.com",
phone_number: "+1234567890",
origin_zip: "90210",
destination_zip: "10001",
estimated_ship_date: "2026-06-15",
overseas_type: "DOMESTIC",
ship_via: "OPEN",
vehicles: [
{year: 2023, make: "Tesla", model: "Model S", type: "CAR", tariff: 1200, deposit: 200, vehicle_run: true},
],
}),
});
if (!res.ok) throw new Error(`Lead failed: ${res.status}`);
const data = await res.json();
console.log(data);
import os, requests
resp = requests.post(
"https://api.navigocrm.com/api/v1/public/leads/",
headers={"Authorization": f"Bearer {os.environ['NAVIGO_API_KEY']}"},
json={
"external_id": "lead_998123A",
"first_name": "John", "last_name": "Doe",
"email": "john.doe@example.com", "phone_number": "+1234567890",
"origin_zip": "90210", "destination_zip": "10001",
"estimated_ship_date": "2026-06-15",
"overseas_type": "DOMESTIC", "ship_via": "OPEN",
"vehicles": [{"year": 2023, "make": "Tesla", "model": "Model S",
"type": "CAR", "tariff": 1200, "deposit": 200, "vehicle_run": True}],
},
timeout=15,
)
resp.raise_for_status()
lead = resp.json()
print(lead)
On success, you get 201 Created and the lead details:
{
"id": 1042,
"order_number": "00001042-XT",
"state": "LEAD",
"lead_status": "LEAD",
"external_id": "lead_998123A"
}
Step 3. Check the lead status
/api/v1/public/leads/{external_id}/curl https://api.navigocrm.com/api/v1/public/leads/lead_998123A/ \
-H "Authorization: Bearer $NAVIGO_API_KEY"
As Navigo processes the lead, the state field advances through LEAD → QUOTE → ORDER.
:::tip No state IDs needed
The backend detects state and city automatically from origin_zip / destination_zip.
Just send ZIP codes — see Data Models.
:::
Done! Next steps
- Create Lead — full field reference.
- Data Models — Vehicle object, enums, ZIP-based location.
- Authentication — key format, rate limits, security.