API Documentation
Documentation for AI Agents and Developers to integrate with the GFAVIP Onboarding Hub.
Authentication
All API requests must include the
X-API-Key header.
curl -H "X-API-Key: YOUR_API_KEY" https://onboard.gfavip.com/api/v1/contacts
You can generate API keys in the Dashboard Settings (Team access required). A key's full value is shown once at creation and stored hashed — copy it then.
Scopes
read— required forGETendpoints.write— required forPOST/PATCH;writealso grants read.
Errors
401missing/invalid API key ·403insufficient scope400invalid request (e.g. malformed email) ·409duplicate emailprofile_researchmust be a JSON object ornull; strings, arrays, booleans, and numbers return400.
Error responses are JSON: { "error": "message" }.
Base URL
https://onboard.gfavip.com/api/v1
Endpoints
Query Parameters
page(int, default: 1) - Page numberper_page(int, default: 20) - Items per pageemail(string, optional) - Filter by exact email match
Response Example
{
"contacts": [
{
"id": "uuid-string",
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Inc",
"email": "john@example.com",
"status": "Cold",
"source": "API",
"tags": "vip, 2024",
"website": "https://example.com",
"job_title": "VP Partnerships",
"phone": "+1 555 0100",
"linkedin_url": "https://linkedin.com/in/johndoe",
"x_url": "https://x.com/johndoe",
"profile_photo_url": "https://cdn.example.com/johndoe.jpg",
"location": "New York",
"country": "USA",
"custom_fields": {
"tier": "vip"
},
"profile_research": {
"summary": "Payments executive focused on LATAM expansion.",
"signals": ["payments", "sponsor-fit"],
"sources": [
{
"url": "https://example.com/profile",
"title": "Public profile"
}
]
},
"created_at": "2024-03-20T10:00:00"
}
],
"total": 100,
"pages": 5,
"current_page": 1
}
Body Parameters (JSON)
email(string, required) - Unique email addressfirst_name(string, optional)last_name(string, optional)company_name(string, optional)status(string, default: 'Cold') - e.g., Cold, Warm, Qualifiedsource(string, default: 'API')website(string, optional)job_title(string, optional)phone(string, optional)linkedin_url(string, optional)x_url(string, optional)profile_photo_url(string, optional)location(string, optional)country(string, optional)tags(string, optional) - Comma separatednotes(string, optional)custom_fields(object, optional) - JSON object for extra dataprofile_research(object, optional) - JSON object for AI or manual research
API-created contacts are not auto-queued for email validation in this phase. Manual and CSV contacts are queued by the browser flow.
Response Example (Abbreviated)
{
"id": "new-uuid-string",
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Inc",
"email": "john@example.com",
"status": "Cold",
"source": "API",
"tags": "vip, 2024",
"website": "https://example.com",
"job_title": "VP Partnerships",
"phone": "+1 555 0100",
"linkedin_url": "https://linkedin.com/in/johndoe",
"x_url": "https://x.com/johndoe",
"profile_photo_url": "https://cdn.example.com/johndoe.jpg",
"location": "New York",
"country": "USA",
"profile_research": {
"summary": "Payments executive focused on LATAM expansion.",
"signals": ["payments", "sponsor-fit"]
}
}
Body Parameters (JSON)
Include only fields you want to update.
statustagsnotesfirst_namelast_namecompany_namewebsitejob_titlephonelinkedin_urlx_urlprofile_photo_urllocationcountrycustom_fieldsprofile_research(object ornull)
Body Parameters (JSON)
content(string, required) - The text content of the comment
Response Example
{
"id": "comment-uuid",
"message": "Comment added successfully",
"created_at": "2024-03-20T10:05:00"
}
Response Example
{
"comments": [
{
"id": "comment-uuid",
"content": "Sent outreach email #1",
"user_id": "user-uuid",
"user_name": "Lead Gen Agent",
"created_at": "2024-03-20T10:05:00"
}
]
}