The Geniziz REST API. Everything in the app is built on it, so anything you can do in the product you can automate.
Authentication
Send your API key as HTTP Basic auth — the key is the username, the password is blank. Set the api_key collection variable once and every request inherits it. Create keys under Settings → API & Webhooks.
curl -u YOUR_API_KEY: {{base_url}}/api/v1/me/
Base URL
The base_url variable (defaults to your app domain).
IDs
Opaque, prefixed strings — lead_…, cont_…, oppo_…, acti_…, task_…. Never assume a format beyond the prefix.
Responses & pagination
Single resources return the object. List endpoints return { "data": [ … ], "has_more": true|false } and page with _limit (default 100, max 200) and _skip (offset).
Field selection
Add _fields=id,name,date_created to any read to trim the response.
Errors
Non-2xx responses use { "error": "message", "field-errors": { "field": "why" } } with a matching HTTP status (400 validation, 401 auth, 402 billing, 404 not found, 405 method, 429 rate limit).
Rate limits
Per-endpoint-group limits with standard ratelimit-* response headers.
MCP
The same key authenticates the MCP server at {{base_url}}/mcp/ (send a Geniziz-Scope header of read, write_safe, or write_destructive) for AI agents.
Alongside task-specific tools (search, send_email, lead scoring…), generic list_records / get_record / create_record / update_record / delete_record tools dispatch into the same handlers as this reference and cover every business resource here — so an agent can work the whole CRM. Admin/identity endpoints (users, roles, API keys, credentials, organization) are intentionally not exposed over MCP.
Activity
GET
List activities
https://app.geniziz.com/api/v1/activity/?_limit=100&_skip=0&_fields=
GET /activity/ — the unified stream, newest first.
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Note activity
https://app.geniziz.com/api/v1/activity/note/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Note activity
https://app.geniziz.com/api/v1/activity/note/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/note/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/note/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/note/:id/
GET
Call activity
https://app.geniziz.com/api/v1/activity/call/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Call activity
https://app.geniziz.com/api/v1/activity/call/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/call/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/call/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/call/:id/
GET
Channel message activity
https://app.geniziz.com/api/v1/activity/channel_message/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Channel message activity
https://app.geniziz.com/api/v1/activity/channel_message/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/channel_message/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/channel_message/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/channel_message/:id/
GET
Lead activity
https://app.geniziz.com/api/v1/activity/status_change/lead/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Opportunity activity
https://app.geniziz.com/api/v1/activity/status_change/opportunity/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Created activity
https://app.geniziz.com/api/v1/activity/created/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Task completed activity
https://app.geniziz.com/api/v1/activity/task_completed/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Custom activity
https://app.geniziz.com/api/v1/activity/custom/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Custom activity
https://app.geniziz.com/api/v1/activity/custom/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/custom/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/custom/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/custom/:id/
GET
Email activity
https://app.geniziz.com/api/v1/activity/email/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Email activity
https://app.geniziz.com/api/v1/activity/email/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/email/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/email/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/email/:id/
GET
SMS activity
https://app.geniziz.com/api/v1/activity/sms/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
SMS activity
https://app.geniziz.com/api/v1/activity/sms/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/sms/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/sms/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/sms/:id/
GET
Emailthread activity
https://app.geniziz.com/api/v1/activity/emailthread/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
GET
Get activity
https://app.geniziz.com/api/v1/activity/emailthread/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
GET
Meeting activity
https://app.geniziz.com/api/v1/activity/meeting/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Meeting activity
https://app.geniziz.com/api/v1/activity/meeting/
Request body (JSON)
{
}
GET
Get activity
https://app.geniziz.com/api/v1/activity/meeting/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update activity
https://app.geniziz.com/api/v1/activity/meeting/:id/
Request body (JSON)
{
}
DELETE
Delete activity
https://app.geniziz.com/api/v1/activity/meeting/:id/
AI
POST
Summarize lead ai
https://app.geniziz.com/api/v1/ai/summarize_lead/
Request body (JSON)
{
}
POST
Draft email ai
https://app.geniziz.com/api/v1/ai/draft_email/
Request body (JSON)
{
}
POST
Summarize conversation ai
https://app.geniziz.com/api/v1/ai/summarize_conversation/
Request body (JSON)
{
}
POST
Score lead ai
https://app.geniziz.com/api/v1/ai/score_lead/
Request body (JSON)
{
}
POST
Generate icp rubric ai
https://app.geniziz.com/api/v1/ai/generate_icp_rubric/
Generate a structured, validated ICP scoring rubric from a plain-English
description. Returns the rubric; persist it via PUT /organization/
settings.icp.rubric to make scoring use it.
Request body (JSON)
{
}
POST
Suggest opportunity ai
https://app.geniziz.com/api/v1/ai/suggest_opportunity/
Request body (JSON)
{
}
POST
Search ai
https://app.geniziz.com/api/v1/ai/search/
Request body (JSON)
{
}
POST
Extract tasks ai
https://app.geniziz.com/api/v1/ai/extract_tasks/
Request body (JSON)
{
}
Conversation
GET
List conversations
https://app.geniziz.com/api/v1/conversation/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Create conversation
https://app.geniziz.com/api/v1/conversation/
Request body (JSON)
{
}
GET
Get conversation
https://app.geniziz.com/api/v1/conversation/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update conversation
https://app.geniziz.com/api/v1/conversation/:id/
Request body (JSON)
{
}
DELETE
Delete conversation
https://app.geniziz.com/api/v1/conversation/:id/
Soft delete: hide the thread but keep its messages attached.
POST
Restore conversation
https://app.geniziz.com/api/v1/conversation/:id/restore/
POST /conversation/{id}/restore/ — undo a soft delete.
Request body (JSON)
{
}
POST
Message conversation
https://app.geniziz.com/api/v1/conversation/:id/message/
POST /conversation/{id}/message/ — add a message into the thread.
{type: note|email|sms, ...} — emails/SMS run through the real message
state machine (draft by default; "outbox" sends); recipients default
to the conversation's contact.
Request body (JSON)
{
}
Email Template
GET
List email templates
https://app.geniziz.com/api/v1/email_template/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Create email template
https://app.geniziz.com/api/v1/email_template/
Request body (JSON)
{
}
GET
Get email template
https://app.geniziz.com/api/v1/email_template/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
PUT
Update email template
https://app.geniziz.com/api/v1/email_template/:id/
Request body (JSON)
{
}
DELETE
Delete email template
https://app.geniziz.com/api/v1/email_template/:id/
GET
Render email template
https://app.geniziz.com/api/v1/email_template/:id/render/?_limit=100&_skip=0&_fields=
GET /email_template/{id}/render/?lead_id=&contact_id=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
Lead
GET
List leads
https://app.geniziz.com/api/v1/lead/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
Example response 200
{
"data": [
{
"id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"name": "Acme Inc",
"url": "https://acme.example",
"status_id": "stat_1a2b3c4d5e6f7g8h9i0j1k",
"emails": [
{
"email": "hello@acme.example",
"type": "office"
}
],
"phones": [
{
"phone": "+15551234567",
"type": "office"
}
],
"mrr": 4900,
"date_created": "2026-01-15T09:30:00.000Z",
"date_updated": "2026-01-15T09:30:00.000Z"
}
],
"has_more": false
}
POST
Create lead
https://app.geniziz.com/api/v1/lead/
Request body (JSON)
{
"name": "Acme Inc",
"url": "https://acme.example",
"industry": "Software",
"status_id": "stat_1a2b3c4d5e6f7g8h9i0j1k",
"owner_id": "user_0a1b2c3d4e5f6g7h8i9j0k",
"mrr": 4900,
"emails": [
{
"email": "hello@acme.example",
"type": "office"
}
],
"phones": [
{
"phone": "+15551234567",
"type": "office"
}
],
"addresses": [
{
"city": "Austin",
"country": "US"
}
]
}
Example response 201
{
"id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"name": "Acme Inc",
"url": "https://acme.example",
"status_id": "stat_1a2b3c4d5e6f7g8h9i0j1k",
"emails": [
{
"email": "hello@acme.example",
"type": "office"
}
],
"phones": [
{
"phone": "+15551234567",
"type": "office"
}
],
"mrr": 4900,
"date_created": "2026-01-15T09:30:00.000Z",
"date_updated": "2026-01-15T09:30:00.000Z"
}
POST
Merge lead
https://app.geniziz.com/api/v1/lead/merge/
POST /lead/merge/ {source, destination}: children move to the
destination, the source lead is deleted.
Request body (JSON)
{
}
POST
Move lead
https://app.geniziz.com/api/v1/lead/:id/move/
POST /lead/{id}/move/ {target_organization_id}: move a lead and all
its records into another workspace the caller administers. Org-scoped
references that don't exist in the target are remapped to defaults
(lead/opportunity status) or cleared (owner, assignee, custom fields),
so the lead lands valid. The caller must be an admin of both
workspaces.
Request body (JSON)
{
}
GET
Get lead
https://app.geniziz.com/api/v1/lead/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
Example response 200
{
"id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"name": "Acme Inc",
"url": "https://acme.example",
"status_id": "stat_1a2b3c4d5e6f7g8h9i0j1k",
"emails": [
{
"email": "hello@acme.example",
"type": "office"
}
],
"phones": [
{
"phone": "+15551234567",
"type": "office"
}
],
"mrr": 4900,
"date_created": "2026-01-15T09:30:00.000Z",
"date_updated": "2026-01-15T09:30:00.000Z"
}
PUT
Update lead
https://app.geniziz.com/api/v1/lead/:id/
Request body (JSON)
{
"name": "Acme Incorporated",
"status_id": "stat_won0000000000000000000"
}
Example response 200
{
"name": "Acme Incorporated",
"id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"url": "https://acme.example",
"status_id": "stat_1a2b3c4d5e6f7g8h9i0j1k",
"emails": [
{
"email": "hello@acme.example",
"type": "office"
}
],
"phones": [
{
"phone": "+15551234567",
"type": "office"
}
],
"mrr": 4900,
"date_created": "2026-01-15T09:30:00.000Z",
"date_updated": "2026-01-15T09:30:00.000Z"
}
DELETE
Delete lead
https://app.geniziz.com/api/v1/lead/:id/
Opportunity
GET
List opportunities
https://app.geniziz.com/api/v1/opportunity/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
Example response 200
{
"data": [
{
"id": "oppo_5e6f7g8h9i0j1k2l3m4n5o",
"lead_id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"status_id": "stat_pipe000000000000000000",
"value": 1200000,
"value_period": "annual",
"value_formatted": "$12,000.00",
"confidence": 60,
"note": "Evaluating the Scale plan for 40 reps.",
"date_created": "2026-01-15T09:32:00.000Z"
}
],
"has_more": false
}
POST
Create opportunity
https://app.geniziz.com/api/v1/opportunity/
Request body (JSON)
{
"lead_id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"status_id": "stat_pipe000000000000000000",
"value": 1200000,
"value_period": "annual",
"confidence": 60,
"note": "Evaluating the Scale plan for 40 reps."
}
Example response 201
{
"id": "oppo_5e6f7g8h9i0j1k2l3m4n5o",
"lead_id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"status_id": "stat_pipe000000000000000000",
"value": 1200000,
"value_period": "annual",
"value_formatted": "$12,000.00",
"confidence": 60,
"note": "Evaluating the Scale plan for 40 reps.",
"date_created": "2026-01-15T09:32:00.000Z"
}
GET
Get opportunity
https://app.geniziz.com/api/v1/opportunity/:id/?_fields=
Query parameters
| _fields | Comma-separated fields to return. |
Example response 200
{
"id": "oppo_5e6f7g8h9i0j1k2l3m4n5o",
"lead_id": "lead_2x9Qb1c3d4e5f6g7h8i9j0",
"status_id": "stat_pipe000000000000000000",
"value": 1200000,
"value_period": "annual",
"value_formatted": "$12,000.00",
"confidence": 60,
"note": "Evaluating the Scale plan for 40 reps.",
"date_created": "2026-01-15T09:32:00.000Z"
}
PUT
Update opportunity
https://app.geniziz.com/api/v1/opportunity/:id/
Request body (JSON)
{
}
DELETE
Delete opportunity
https://app.geniziz.com/api/v1/opportunity/:id/
GET
Line item opportunity
https://app.geniziz.com/api/v1/opportunity/:id/line_item/?_limit=100&_skip=0&_fields=
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Line item opportunity
https://app.geniziz.com/api/v1/opportunity/:id/line_item/
Request body (JSON)
{
}
DELETE
Delete opportunity
https://app.geniziz.com/api/v1/opportunity/:id/line_item/:item_id/
Report
GET
Activity report
https://app.geniziz.com/api/v1/report/activity/?_limit=100&_skip=0&_fields=
GET /report/activity/ — the metrics catalog.
Query parameters
| _limit | Page size (max 200). · e.g. 100 |
| _skip | Offset for pagination. |
| _fields | Comma-separated fields to return. |
POST
Activity report
https://app.geniziz.com/api/v1/report/activity/
POST /report/activity/ — per-user activity metrics for a period.
Request body (JSON)
{
}
POST
Funnel report
https://app.geniziz.com/api/v1/report/funnel/
POST /report/funnel/ — pipeline totals by status (+ won in period).
Request body (JSON)
{
}
POST
Calls funnel report
https://app.geniziz.com/api/v1/report/calls_funnel/
POST /report/calls_funnel/ — call volume, outcomes, and connect funnel.
Request body (JSON)
{
}
POST
Opportunity funnels report
https://app.geniziz.com/api/v1/report/opportunity_funnels/
POST /report/opportunity_funnels/ — stage funnel per pipeline.
Request body (JSON)
{
}
POST
Sales report
https://app.geniziz.com/api/v1/report/sales/
POST /report/sales/ — won revenue by month, stage conversion,
forecast by expected close month, per-rep leaderboard, and workflow
performance, in one payload (feeds the dashboard and reports page).
Request body (JSON)
{
}
POST
Lead report
https://app.geniziz.com/api/v1/report/status_change/lead/
Request body (JSON)
{
}
POST
Opportunity report
https://app.geniziz.com/api/v1/report/status_change/opportunity/
Request body (JSON)
{
}
POST
Sent emails report
https://app.geniziz.com/api/v1/report/sent_emails/
POST /report/sent_emails/ — per-template performance.
Request body (JSON)
{
}