canonical: https://jentic.com/apis/nedzo.ai/nedzo

# Nedzo API

Jentic publishes the only available OpenAPI specification for Nedzo API, keeping it validated and agent-ready. The Nedzo API is the programmatic surface of the Nedzo AI voice and communications platform, exposing 345 endpoints across workspaces, AI voice agents, contacts, contact lists, calls, templates, embeddable widgets, branding, and a GoHighLevel workflow integration. It supports a bearer API key for tenant access, an internal X-Service-Key for service-to-service calls, and a Supabase JWT scheme for dashboard users. The base URL is https://api.nedzo.ai and the API is structured around a /v1 namespace with public widget endpoints under /public.

## For AI agents

Trigger AI voice calls, manage agents, contacts, and contact lists, and embed call widgets through the Nedzo communications platform.

## Scope

Does not host SIP infrastructure, send SMS, or process payments - use for AI voice agent and contact orchestration only.

## Capabilities

- Trigger an AI voice call from a GHL workflow via `/v1/ghl/call`
- Create, list, and update AI agents under `/v1/agents`
- Manage workspaces, contacts, and contact lists across `/v1/workspaces` and related endpoints
- Upsert and delete contacts from GoHighLevel through `/v1/ghl/contact`
- Render embeddable call widgets via `/public/widget/{id}/config` and record impressions
- Retrieve domain-scoped branding through `/public/branding`

## Use cases

### Outbound AI Voice Campaign

A sales team triggers AI voice calls to a list of contacts using Nedzo's pre-trained agents. The team uploads or syncs the contact list, configures the agent's script and voice, then calls `/v1/ghl/call` from a GoHighLevel workflow or directly from a custom backend. Nedzo handles the call placement, the AI conversation, and returns the recording and outcome to the workspace.

Example prompt: POST `/v1/ghl/call` with the agent id, target phone number, and contact metadata to place an AI voice call.

### Embedded Call Widget on a Marketing Site

A marketing site embeds a Nedzo call widget so visitors can speak with an AI sales agent without leaving the page. The widget pulls its theme and agent assignment from `/public/widget/{id}/config`, records each impression via `/public/widget/{id}/impression`, and uses `/public/branding` to render the correct logo and colors based on the host domain.

Example prompt: GET `/public/widget/{id}/config` for the embedded widget and render the agent UI with the returned theme.

### Multi-Tenant Workspace Provisioning

An agency provisions a Nedzo workspace per client, configures agents and contacts, and rotates API keys via `/v1/workspaces` and the agent endpoints. Tenants are isolated by workspace id, and the bearer API key scopes calls to the owning tenant. The provisioning workflow takes minutes per client once the agent templates are defined.

Example prompt: POST `/v1/workspaces` with the new client name, then POST `/v1/agents` with the agent template configured for that workspace.

### Agent-Driven Voice Outreach

An AI agent in an outbound workflow uses Jentic to discover Nedzo operations, place calls, and reconcile call outcomes back to the contact record without hard-coding any of Nedzo's 345 endpoints. The agent searches for the right operation, loads the schema, and submits the call request while Jentic handles the bearer key.

Example prompt: Search Jentic for 'place an AI voice call', load the schema for `/v1/ghl/call`, and execute it with the agent id and target phone number.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/ghl/call` | Trigger an AI voice call from a GHL workflow |
| GET | `/v1/ghl/agents` | List agents for a GHL workflow |
| PUT | `/v1/ghl/contact` | Upsert a contact from GHL |
| GET | `/v1/workspaces` | List workspaces |
| POST | `/v1/agents` | Create an AI voice agent |
| GET | `/public/widget/{id}/config` | Get embedded widget configuration |
| POST | `/public/widget/{id}/impression` | Record a widget impression |
| GET | `/public/branding` | Get domain-scoped branding |

## Key resources

- **Workspaces** — Provision and manage tenant workspaces
- **Agents** — Create, list, and configure AI voice agents
- **Contacts and Contact Lists** — Upsert and segment contacts for outbound campaigns
- **Calls and GHL Workflow** — Trigger AI voice calls including via GoHighLevel
- **Templates** — Manage agent and message templates
- **Widgets and Branding** — Embed call widgets and serve domain-scoped branding

## Why Jentic

- **Setup:** Wiring the Nedzo API by hand means juggling three credential types, the bearer key, the X-Service-Key, and the Supabase JWT, and picking the right one across voice-call, agent, and workspace endpoints yourself. Through Jentic you install once, import Nedzo from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** The Nedzo voice-call and contact operations carry the agent, contact, and workspace targets inside the request body rather than as a resource id in the URL path, so you limit the agent to the operations it needs, such as placing a call or updating a contact. Because you choose that set, agent creation is excluded unless you add it.
- **Credential handling:** Your Nedzo API key and service-key values are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'place an AI voice call' or 'update a GHL contact', and Jentic returns the matching Nedzo operation with its request schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Bland AI** — AI phone-call platform with similar agent and call-trigger primitives
- **Retell AI** — Real-time AI voice agent platform with low-latency conversation API
- **ElevenLabs** — Text-to-speech voices that can power custom Nedzo agent personas

## FAQ

### Why is there no official OpenAPI spec for Nedzo API?

Nedzo publishes its API as developer documentation rather than a stable OpenAPI file. Jentic generates and maintains this spec so that AI agents and developers can call Nedzo API via structured tooling. It is validated against the live api.nedzo.ai endpoints and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Nedzo API use?

Most /v1 endpoints accept a bearerAuth API key obtained from the Nedzo dashboard, sent as Authorization: Bearer <key>. Internal service-to-service calls use the X-Service-Key header with IP allowlisting, and dashboard-user calls use a Supabase JWT in Authorization: Bearer <jwt>. Through Jentic the API key is stored encrypted in the vault.

### Can I trigger an AI voice call with the Nedzo API?

Yes. POST `/v1/ghl/call` with the agent id and target phone number plus contact metadata. The endpoint queues the call on the Nedzo platform, returns a call id, and emits webhook events with the recording and outcome when the call completes.

### What are the rate limits for the Nedzo API?

Nedzo does not publish numeric per-endpoint rate limits in the OpenAPI document; outbound call concurrency is governed by the workspace's plan and carrier capacity. Expect 429 responses on bursts and back off; contact Nedzo support to lift call concurrency for production.

### How do I create an AI voice agent through Jentic?

Run pip install jentic, then search for 'create a Nedzo voice agent', load the schema for POST `/v1/agents`, and execute it with the workspace id and the agent script and voice configuration. Jentic returns the agent id ready for use in `/v1/ghl/call.`

### Does the Nedzo API host the carrier infrastructure?

No. Nedzo orchestrates the AI conversation and call placement on top of underlying telephony providers. The API exposes call triggering and outcome retrieval, not low-level SIP or carrier configuration.

### Can I limit what my agent is allowed to do with the Nedzo API?

Yes. Because Jentic One is self-hosted, your own rules decide which Nedzo operations and credentials the agent may use, so you can allow it to place an AI voice call through `/v1/ghl/call` or upsert a contact through `/v1/ghl/contact` while withholding everything else. Nedzo carries the agent, contact, and workspace targets inside the request body rather than in the URL path, so you scope access by the operations you enable rather than by resource id. Since you choose that set, sensitive operations such as creating an AI voice agent through `/v1/agents` stay excluded unless you add them.
