API Setup allows you to connect external applications to net2phone services. From the browser or desktop app, Admin users can manage API keys, configure webhooks, and enable click-to-call for integrated browser calling.
Want to implement net2phone API?
Detailed implementation guidance is available in the net2phone Developer Documentation knowledge base.
The API Setup page includes three sections:
- API Keys – Authenticate API requests from external systems.
- Webhooks – Receive real-time event data at an external URL.
- Click-to-Call – Initiate outbound calls from another application.
Access API setup
You must have an Admin login to access API Setup in the Settings portal.
- From the browser or desktop app, click your profile icon.
- Click Admin Settings.
You will be redirected to a new browser tab. - From the left navigation menu, click API Setup.

Webhooks
Webhooks send “event data”—such as call activity—from net2phone to an external URL. Multiple webhook endpoints can be configured.
Common Webhook Uses
Webhooks are commonly used to send call and event data from net2phone to other systems, such as:
CRM activity logging
Automatically record inbound and outbound calls in systems like a CRM, including timestamps, call direction, and duration.
Call outcome tracking
Trigger follow-up workflows when a call is completed, missed, or unanswered.
Real-time dashboards and reporting
Feed live call data into internal dashboards or reporting tools for visibility into call volume and activity.
Ticketing or case creation
Create or update tickets in a helpdesk or support system when calls occur.
Call monitoring and auditing
Capture call events for compliance, auditing, or quality monitoring workflows.
Custom notifications
Send alerts (for example, email, Slack, or internal tools) when specific call events occur.
Webhooks can be added through the web app or managed programmatically using the API.
Add a webhook
Use the web app to add a webhook endpoint.
- Select the Webhook tab.
- Click Add Webhook.
- Enter the required field descriptions.
- Save your changes.
Webhook field descriptions (click to expand)
Name
A label used to identify the webhook in the net2phone web app; this name is for internal reference only and does not affect webhook delivery.
Destination URL
The endpoint where net2phone will send webhook event data. The destination URL must be a URL that can receive HTTPS requests from net2phone.
Description (optional)
An optional note to describe the purpose of the webhook.
Events
Choose which types of events will trigger this webhook.
All Events
Sends all supported event notifications to the destination URL.
Specific Events
Sends only selected event types, based on your configuration. Selecting specific events can help reduce unnecessary traffic to your endpoint.
Users
Limit which users can trigger events for this webhook.
Entire Company
Sends events triggered by any user in the organization.
Specific Team Members
Sends events only when selected users trigger an event. This option is useful when you want to monitor or integrate activity for a subset of users.
Secret key
A secret key is automatically generated when the webhook is added.
This key can be used by your system to verify that incoming webhook requests are from net2phone.
You can copy or regenerate the secret key at any time by editing the webhook.

Learn more about webhook supported events, payloads, and subscription behaviour, with net2phone's Developer Webhook API documentation.
Click-to-Call
Click-to-Call allows external applications—such as CRMs or helpdesk tools—to initiate outbound calls through net2phone. Simply, click-to-call allows you to select a phone number on your computer and call them directly through your net2phone extension. If your organization has click-to-call configured, Admin users can manage specific keys in this section of the Settings portal.

API keys
API keys authenticate requests made to the net2phone API. Similar to how click-to-call keys (above) are a type of API key, web developers can use this section to create, rotate, or revoke keys used by external applications.
For security, newly generated API keys are shown only once.
Create a new API key
Use the steps below to generate a new API key from the web app.
- Open the API Keys tab.
- Click Create New API Key.
- Copy the key and store it securely.
Important: If a key is lost or exposed, revoke it and generate a new one.

Developer setup (advanced)
The sections below are intended for developers building custom integrations. Your organization is responsible for implementing and securing API-based workflows.
Definitions
The placeholders below are used in the example API requests that follow.
- INSERT_CLIENT_ID: Developer Client ID provided by net2phone
- INSERT_ACCESS_TOKEN: Access token returned by the token request
- INSERT_REFRESH_TOKEN: Refresh token returned by the token request
- INSERT_EMAIL_ADDRESS: User email address for authentication
- INSERT_PASSWORD: Password for the authenticated user
- INSERT_USER_ID: User ID returned by the token request
- INSERT_URL: Webhook destination URL
-
INSERT_DIALED_NUMBER:
- USA/Canada: 1 + phone number (example: 19735551212)
- International: 011 + country code + phone number (example: 011556155555555)
Get token (first time)
Use this request to obtain an access token and a refresh token.
curl --location --request POST 'https://integrate.versature.com/api/oauth/token/' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{"client_id":"INSERT_CLIENT_ID","grant_type":"password","username":"INSERT_EMAIL_ADDRESS","password":"INSERT_PASSWORD"}'Refresh token
Access tokens expire and must be refreshed periodically.
curl --location --request POST 'https://integrate.versature.com/api/oauth/token/' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{"client_id":"INSERT_CLIENT_ID","grant_type":"refresh_token","refresh_token":"INSERT_REFRESH_TOKEN"}'Place a call (Click-to-Call)
Once authenticated, use the Click-to-Call endpoint to initiate an outbound call.
curl --location --request POST 'https://integrate.versature.com/api/calls/' \
--header 'Accept: application/vnd.integrate.v1.8.0+json' \
--header 'Authorization: Bearer INSERT_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{ "to": "INSERT_DIALED_NUMBER" }'Create a webhook subscription
Use this request to subscribe to call event notifications programmatically. Webhook subscriptions may include expiration settings and require renewal.
curl -X POST 'https://integrate.versature.com/api/subscriptions/' \
-H 'Accept: application/vnd.integrate.v1.8.0+json' \
-H 'Authorization: Bearer INSERT_ACCESS_TOKEN' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{ "user": "INSERT_USER_ID", "post_uri": "INSERT_URL", "expires_in": "6000", "calls": true }'Get DIDs assigned to the current user
This request returns the phone numbers assigned to the authenticated user.
curl --location --request GET 'https://integrate.versature.com/api/devices/users/current/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/vnd.integrate.v1.8.0+json' \
--header 'Authorization: Bearer INSERT_TOKEN'Security best practices
- Store API keys and tokens securely.
- Rotate credentials regularly and revoke unused keys.
- Restrict webhook endpoints to trusted sources.
- Use HTTPS for all webhook endpoints.