Skip to main content

Create Application

Endpoint

POST /v1/applications

Method

POST

Auth requirement

Bearer application API key.

Business example: create one application for a receptionist IVR that answers the main number, gathers the caller department, and sends webhooks to your CRM.

Request body

{
"name": "Support IVR",
"answer_url": "https://example.com/minivoice/answer",
"webhook_url": "https://example.com/minivoice/webhooks",
"webhook_secret": "change-me"
}

Response body

{
"id": "app_20260529T120000.000000000",
"customer_id": "cust_123",
"name": "Support IVR",
"answer_url": "https://example.com/minivoice/answer",
"webhook_url": "https://example.com/minivoice/webhooks",
"api_key": "mv_live_xxx",
"created_at": "2026-05-29T12:00:00Z"
}

Errors

400 invalid_json or invalid_request. 401 unauthorized.

Common Error Example

{
"error": {
"code": "invalid_request",
"message": "name is required"
}
}

Example curl

curl -sS -X POST https://api.minivoice.eu/v1/applications \
-H 'Authorization: Bearer $MINIVOICE_API_KEY' \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"name": "Support IVR",
"answer_url": "https://example.com/minivoice/answer",
"webhook_url": "https://example.com/minivoice/webhooks"
}
JSON

Test procedure

Create an application, save the returned API key, and call GET /v1/applications to confirm it is available.

Integration guidance

Use this page as part of a complete MiniVoice integration, not as an isolated reference. Start by wiring the smallest possible version in a test application, then add business logic after you can reproduce the behaviour reliably. Keep the MiniVoice call ID in your own records, because that ID is the easiest way to connect API responses, webhook events, recordings, AI results, and billing details.

When you build the workflow, separate caller experience from backend processing. The caller should hear short prompts and reach a destination quickly. Longer work, such as updating a CRM or creating a support ticket, should happen after your webhook endpoint has accepted the event. This keeps the voice flow responsive and makes retry handling easier.

For manual testing, use one known DID, one known destination number, and one webhook receiver where you can inspect request headers and bodies. Run the same test at least three times: one normal path, one invalid input path, and one timeout or no-answer path. Save the examples that worked as fixtures for future regression tests.

Integration checklist

An application connects your API key, answer_url, webhook_url, and routing choices. Start with one test application and one simple answer_url that returns a single action. After that works, add gather, transfer, recording, or AI processing in small steps.

Before using the application for real traffic, confirm that the answer_url returns valid JSON quickly, the webhook_url accepts signed events, and the DID or trunk route points to the correct application. Keep separate applications for testing and production so experiments do not affect live callers.

Copy/Paste Examples

Real Request

curl -sS https://api.minivoice.eu/v1/applications \
-H 'Authorization: Bearer $MINIVOICE_API_KEY'

Real Response

{
"data": [
{
"id": "app_123",
"name": "Support IVR",
"customer_id": "cust_123",
"answer_url": "https://example.com/answer",
"webhook_url": "https://example.com/webhooks",
"created_at": "2026-05-29T12:00:00Z"
}
],
"count": 1
}

Real Webhook Example

{
"event": "call.completed",
"created_at": "2026-05-29T12:10:00Z",
"call": {
"id": "call_123",
"customer_id": "cust_123",
"application_id": "app_123",
"status": "completed",
"direction": "inbound",
"from": "+15551230001",
"to": "+15551230002"
},
"variables": {},
"data": {}
}

Common Use Case

Create a receptionist or support IVR application before assigning a DID.

Common Failure Case

{
"error": {
"code": "invalid_request",
"message": "answer_url must be a valid URL"
}
}

Use the error code for branching and log the full response body while testing.