This is a managed Lava service — no setup required. Lava provisions and connects it for you automatically.
This is a catch-all provider — any valid URL under
https://lava-crm-api.fly.dev is supported. Lava CRM REST API. Base: https://lava-crm-api.fly.dev, all paths under /api/ with a trailing slash. Auth: Bearer token (provisioned automatically by Lava; no manual key). Resources: /api/contacts/, /api/accounts/ (companies), /api/leads/, /api/opportunities/ (deals), /api/tasks/, /api/cases/, /api/invoices/. List endpoints support page and search query params; detail endpoints are /api/{resource}/{id}/. Deal pipelines with fully custom stages live under /api/deal-pipelines/: list pipelines GET /api/deal-pipelines/, create a pipeline POST /api/deal-pipelines/ {name}, board (each stage with its deals) GET /api/deal-pipelines/board/?pipeline_id=<id>, add a custom stage POST /api/deal-pipelines/<pipeline_id>/stages/ {name}, rename a stage PUT /api/deal-pipelines/stages/<stage_id>/ {name}, delete an (empty, non Won/Lost) stage DELETE /api/deal-pipelines/stages/<stage_id>/. To move a deal between stages, use PATCH /api/deal-pipelines/deals/<deal_id>/move/ {stage_id} with a stage_id from the board — NOT the fixed 6-value ‘stage’ enum on /api/opportunities/ (PROSPECTING/QUALIFICATION/PROPOSAL/NEGOTIATION/CLOSED_WON/CLOSED_LOST). That enum is legacy and only accepts those six values; custom stages (e.g. Contacted, Meeting) only exist through /api/deal-pipelines/. Moving a deal to a Won/Lost stage closes it automatically. All access is scoped to the caller token owner org. The endpoints below are curated examples.Endpoints
List contacts. Supports page and search query params.
GEThttps://lava-crm-api.fly.dev/api/contacts/ — Free
- SDK
- cURL
Create a contact. Common fields: first_name, last_name, primary_email, mobile_number.
POSThttps://lava-crm-api.fly.dev/api/contacts/ — Free
- SDK
- cURL
Update a contact by id (partial update).
PATCHhttps://lava-crm-api.fly.dev/api/contacts/{id}/ — Free
- SDK
- cURL
Delete a contact by id.
DELETEhttps://lava-crm-api.fly.dev/api/contacts/{id}/ — Free
- SDK
- cURL
List accounts (companies the org does business with).
GEThttps://lava-crm-api.fly.dev/api/accounts/ — Free
- SDK
- cURL
List leads. Supports page and search query params.
GEThttps://lava-crm-api.fly.dev/api/leads/ — Free
- SDK
- cURL
List opportunities (deals) across the pipeline.
GEThttps://lava-crm-api.fly.dev/api/opportunities/ — Free
- SDK
- cURL
List tasks.
GEThttps://lava-crm-api.fly.dev/api/tasks/ — Free
- SDK
- cURL
List deal pipelines (a default pipeline is auto-provisioned). Each has stages with stage_type open/won/lost.
GEThttps://lava-crm-api.fly.dev/api/deal-pipelines/ — Free
- SDK
- cURL
Create a deal pipeline. Seeds default stages plus a mandatory Won and Lost stage.
POSThttps://lava-crm-api.fly.dev/api/deal-pipelines/ — Free
- SDK
- cURL
Pipeline board: every stage (column) with its deals and the stage ids needed to move deals. Pass ?pipeline_id=<id> to pick a pipeline; omit for the default.
GEThttps://lava-crm-api.fly.dev/api/deal-pipelines/board/ — Free
- SDK
- cURL
Move a deal to a stage. Use stage_id from the board, not the opportunity ‘stage’ enum. Moving to a Won/Lost stage closes the deal. Optional above_id/below_id position it within the stage.
PATCHhttps://lava-crm-api.fly.dev/api/deal-pipelines/deals/{deal_id}/move/ — Free
- SDK
- cURL
Add a custom open stage to a pipeline (e.g. Contacted, Meeting). This is the only way custom stages exist on the backend.
POSThttps://lava-crm-api.fly.dev/api/deal-pipelines/{pipeline_id}/stages/ — Free
- SDK
- cURL
Rename a stage by id.
PUThttps://lava-crm-api.fly.dev/api/deal-pipelines/stages/{stage_id}/ — Free
- SDK
- cURL
Delete a stage by id. Only empty open stages can be deleted; Won and Lost are required and protected.
DELETEhttps://lava-crm-api.fly.dev/api/deal-pipelines/stages/{stage_id}/ — Free
- SDK
- cURL
Next Steps
All Providers
Browse all supported AI providers
Forward Proxy
Learn how to construct proxy URLs and authenticate requests