Skip to main content

Create a Quick App through the API

Create, read, update, and delete Quick Apps with the DIAL Core applications API. This guide is for developers who automate app management, for example from CI/CD pipelines. It assumes you can call the DIAL Core API with an API key, and know the Quick App manifest.

Prerequisites​

  • A DIAL deployment with the Quick Apps Backend registered in DIAL Core. See DIAL Quick Apps.
  • The DIAL Core URL, such as https://dial.example.com. If DIAL Chat is at https://chat.dial.example.com, DIAL Core is usually at https://dial.example.com. Ask your administrator for the exact URL.
  • An API key for DIAL Core, in an environment variable: export DIAL_API_KEY="<YOUR_DIAL_API_KEY>".
  • A model in your DIAL deployment that supports tool calls.

Create a Quick App​

Applications you create are stored in your bucket. Look up its ID:

curl "https://dial.example.com/v1/bucket" -H "api-key: ${DIAL_API_KEY}"
# → {"bucket":"3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST", ...}
export DIAL_BUCKET="3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST"

Then save the app with PUT /v1/applications/{bucket}/{application-path}. The path is a name or folder path in the bucket: lowercase letters, numbers, hyphens, and /, such as research-assistant. The body is the application, with the manifest in applicationProperties:

curl -X PUT "https://dial.example.com/v1/applications/${DIAL_BUCKET}/weather-assistant" \
-H "Content-Type: application/json" \
-H "api-key: ${DIAL_API_KEY}" \
-d '{
"displayName": "Weather Assistant",
"description": "Looks up the current weather for any location.",
"applicationTypeSchemaId": "https://mydial.epam.com/custom_application_schemas/quickapps2",
"applicationProperties": {
"orchestrator": {
"deployment": { "deployment_id": "<MODEL_ID>", "parameters": { "temperature": 0.3 } },
"system_prompt": {
"type": "custom",
"variables": {},
"content": "You are a weather assistant. Use get_weather to look up current conditions. State the location and temperature."
}
},
"contexts": [],
"tool_sets": [
{
"type": "rest-api",
"name": "weather",
"tools": [
{
"type": "restapi-tool",
"rest_api_method_info": { "method_url": "https://api.open-meteo.com/v1/forecast", "method_type": "get" },
"open_ai_tool": {
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather at a latitude and longitude.",
"parameters": {
"type": "object",
"properties": {
"latitude": { "type": "number", "description": "The latitude.", "parameter_info": { "type": "query", "key": "latitude" } },
"longitude": { "type": "number", "description": "The longitude.", "parameter_info": { "type": "query", "key": "longitude" } },
"current": { "type": null, "const": "temperature_2m,wind_speed_10m", "parameter_info": { "type": "query", "key": "current" } }
},
"required": ["latitude", "longitude", "current"]
}
}
}
}
]
}
],
"conversation_starters": {
"starters": [{ "title": "London weather", "text": "What is the weather in London?" }]
}
}
}'

The response returns the saved application. For other manifests, such as MCP servers, DIAL models as tools, or skills and hooks, start from the manifest examples.

Read a Quick App​

curl "https://dial.example.com/v1/applications/${DIAL_BUCKET}/weather-assistant" \
-H "api-key: ${DIAL_API_KEY}"

To list every application you can use, call GET /openai/applications.

Update a Quick App​

Send the whole application again with PUT to the same path. The request replaces the application; it doesn't merge fields. To change one field, read the application, change the field, and send it all back.

Delete a Quick App​

curl -X DELETE "https://dial.example.com/v1/applications/${DIAL_BUCKET}/weather-assistant" \
-H "api-key: ${DIAL_API_KEY}"

Common errors​

StatusCauseFix
400The manifest doesn't match the schemaCheck it against the manifest reference. Common causes are a missing orchestrator, contexts, or tool_sets, and an unknown type.
401A missing or invalid API keyCheck the api-key header
404No application at the pathCheck the bucket and the path

Errors the app reports while it runs are covered in Errors.

Further reading​