# API availability

**Availability: Preview**

API v1 is in private preview. This page lists what you can do through the API today, what is done in the console and what is planned, so you can design your integration around what exists.

## Availability labels

These labels appear throughout the docs:

- **Availability: Available** works in API v1 and is not expected to change incompatibly. During the private preview your workspace still has to be enabled to use it.
- **Availability: Preview** works in API v1 for workspaces in the preview; details may still change before general availability. Changes are announced in the [changelog](/resources/changelog).
- **Availability: Test mode** works with test keys against simulated data.
- **Availability: Console only** done in the RelationsAI console, not through the API.
- **Availability: Planned** on the roadmap, not available yet.

Every operation works in both test mode and live mode, with the differences described in [Test mode](/getting-started/test-mode).

## Available in v1

Every operation of API v1, grouped as in the [API reference](/api):

### Workspace

- [`GET /workspace`](/api/workspace#retrieve-the-workspace) Retrieve the workspace. **Availability: Available**

### Agents

- [`GET /agents`](/api/agents#list-agents) List agents. **Availability: Available**
- [`GET /agents/{agent_id}`](/api/agents#retrieve-an-agent) Retrieve an agent. **Availability: Available**
- [`GET /agents/{agent_id}/readiness`](/api/agents#check-whether-an-agent-can-place-calls) Check whether an agent can place calls. **Availability: Available**

### Phone numbers

- [`GET /phone-numbers`](/api/phone-numbers#list-phone-numbers) List phone numbers. **Availability: Available**
- [`GET /phone-numbers/{phone_number_id}`](/api/phone-numbers#retrieve-a-phone-number) Retrieve a phone number. **Availability: Available**

### Calls

- [`POST /calls`](/api/calls#place-a-call) Place a call. **Availability: Preview**
- [`GET /calls`](/api/calls#list-calls) List calls. **Availability: Available**
- [`GET /calls/{call_id}`](/api/calls#retrieve-a-call) Retrieve a call. **Availability: Available**
- [`GET /calls/{call_id}/transcript`](/api/transcripts#retrieve-a-call-transcript) Retrieve a call transcript. **Availability: Available**
- [`GET /calls/{call_id}/recording`](/api/recordings#retrieve-a-call-recording-link) Retrieve a call recording link. **Availability: Preview**
- [`GET /calls/{call_id}/analysis`](/api/analysis#retrieve-a-call-analysis) Retrieve a call analysis. **Availability: Available**
- [`GET /recordings/{recording_token}`](/api/recordings#download-recording-audio) Download recording audio. **Availability: Preview**

### Campaigns

- [`POST /campaigns`](/api/campaigns#create-a-campaign) Create a campaign. **Availability: Available**
- [`GET /campaigns`](/api/campaigns#list-campaigns) List campaigns. **Availability: Available**
- [`GET /campaigns/{campaign_id}`](/api/campaigns#retrieve-a-campaign) Retrieve a campaign. **Availability: Available**
- [`PATCH /campaigns/{campaign_id}`](/api/campaigns#update-a-campaign) Update a campaign. **Availability: Available**
- [`POST /campaigns/{campaign_id}/recipients`](/api/campaigns#add-recipients) Add recipients. **Availability: Available**
- [`GET /campaigns/{campaign_id}/recipients`](/api/campaigns#list-recipients) List recipients. **Availability: Preview**
- [`POST /campaigns/{campaign_id}/start`](/api/campaigns#start-a-campaign) Start a campaign. **Availability: Preview**
- [`POST /campaigns/{campaign_id}/pause`](/api/campaigns#pause-a-campaign) Pause a campaign. **Availability: Available**
- [`POST /campaigns/{campaign_id}/resume`](/api/campaigns#resume-a-campaign) Resume a campaign. **Availability: Preview**
- [`POST /campaigns/{campaign_id}/stop`](/api/campaigns#stop-a-campaign) Stop a campaign. **Availability: Available**

### Contacts

- [`POST /contacts`](/api/contacts#create-a-contact) Create a contact. **Availability: Available**
- [`GET /contacts`](/api/contacts#list-contacts) List contacts. **Availability: Available**
- [`POST /contacts/upsert`](/api/contacts#create-or-update-a-contact-by-phone-number) Create or update a contact by phone number. **Availability: Available**
- [`GET /contacts/{contact_id}`](/api/contacts#retrieve-a-contact) Retrieve a contact. **Availability: Available**
- [`PATCH /contacts/{contact_id}`](/api/contacts#update-a-contact) Update a contact. **Availability: Available**
- [`DELETE /contacts/{contact_id}`](/api/contacts#delete-a-contact) Delete a contact. **Availability: Available**

### Do-not-call list

- [`POST /dnc-entries`](/api/do-not-call-list#add-a-number-to-the-do-not-call-list) Add a number to the do-not-call list. **Availability: Available**
- [`GET /dnc-entries`](/api/do-not-call-list#list-or-look-up-do-not-call-entries) List or look up do-not-call entries. **Availability: Available**
- [`DELETE /dnc-entries/{dnc_entry_id}`](/api/do-not-call-list#remove-a-number-from-the-do-not-call-list) Remove a number from the do-not-call list. **Availability: Available**

### Webhook endpoints

- [`POST /webhook-endpoints`](/api/webhook-endpoints#create-a-webhook-endpoint) Create a webhook endpoint. **Availability: Preview**
- [`GET /webhook-endpoints`](/api/webhook-endpoints#list-webhook-endpoints) List webhook endpoints. **Availability: Preview**
- [`GET /webhook-endpoints/{webhook_endpoint_id}`](/api/webhook-endpoints#retrieve-a-webhook-endpoint) Retrieve a webhook endpoint. **Availability: Preview**
- [`PATCH /webhook-endpoints/{webhook_endpoint_id}`](/api/webhook-endpoints#update-a-webhook-endpoint) Update a webhook endpoint. **Availability: Preview**
- [`DELETE /webhook-endpoints/{webhook_endpoint_id}`](/api/webhook-endpoints#delete-a-webhook-endpoint) Delete a webhook endpoint. **Availability: Preview**
- [`POST /webhook-endpoints/{webhook_endpoint_id}/rotate-secret`](/api/webhook-endpoints#rotate-a-webhook-signing-secret) Rotate a webhook signing secret. **Availability: Preview**
- [`POST /webhook-endpoints/{webhook_endpoint_id}/test`](/api/webhook-endpoints#send-a-test-event) Send a test event. **Availability: Preview**
- [`GET /webhook-endpoints/{webhook_endpoint_id}/deliveries`](/api/webhook-endpoints#list-deliveries) List deliveries. **Availability: Preview**
- [`POST /webhook-deliveries/{webhook_delivery_id}/retry`](/api/webhook-endpoints#retry-a-delivery) Retry a delivery. **Availability: Preview**

The event types delivered by webhooks are listed on the [Event types](/api/events) page: `call.ended`, `call.settled`, `campaign.started`, `campaign.paused`, `campaign.resumed`, `campaign.stopped`, `campaign.completed`, `campaign.failed` and `webhook_endpoint.test`.

## Console only

**Availability: Console only** These are done in the RelationsAI console:

- Creating, configuring, testing and publishing agents, and switching them on or off.
- Adding phone numbers and assigning them to agents.
- Creating, rotating and revoking API keys (see [API keys](/getting-started/api-keys)).
- Members, roles, billing, balance and spend limits.
- Workspace settings: calling hours, consent policy, security settings such as the IP allowlist, and custom field definitions for contacts.

## Not offered in v1

The workspace object reports these as `capabilities`, so your code can check instead of discovering them from errors. Today each is `false`:

| Capability | What `false` means |
| --- | --- |
| `agent_editing` | Agents cannot be created or edited through the API. **Availability: Planned** |
| `call_ringing_status` | Calls go from `queued` straight to `in_progress` or `ended`; there is no separate `ringing` status. |
| `live_transcript` | Transcripts are available after the call ends, not during it. |
| `sentiment_analysis` | Analysis has a summary, extracted fields and the goal outcome, without sentiment. |
| `end_call` | A call in progress cannot be hung up through the API. |
| `inbound_calls` | Inbound calls do not appear in the call list. |

`webhooks` says whether webhook delivery, a separate private preview switched on for the platform as a whole, is available: when it is `false`, endpoints cannot be created, test events and retries answer [`webhooks_not_enabled`](/errors/webhooks_not_enabled), and no events are sent. Read the capabilities with [`GET /workspace`](/api/workspace#retrieve-the-workspace).

## Planned

**Availability: Planned** Creating, configuring and publishing agents through the API. Until then, agents are a console prerequisite: build and publish them in the console, then use them from the API.

Nothing else is announced. New capabilities are added to the [changelog](/resources/changelog) when they ship.

## Getting access

During the private preview, the API is enabled per workspace. A workspace that is not enabled answers every authenticated request with [`api_access_not_enabled`](/errors/api_access_not_enabled) (problems with the path, the body or the key are still reported first), and the platform's **Settings → API Keys** tab shows a preview notice instead of key creation. To request access, email [support@relationsai.com](mailto:support@relationsai.com) from an owner or admin account, with your workspace name and what you plan to build.
