Skip to content

Commit

Permalink
Merge pull request #109 from khushaljethava/master
Browse files Browse the repository at this point in the history
Added API docs and Delete endpoint
  • Loading branch information
prateeksachan authored Jan 24, 2025
2 parents ef2493f + a6e93f2 commit d2f04bc
Show file tree
Hide file tree
Showing 2 changed files with 168 additions and 0 deletions.
152 changes: 152 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# Bolna API Documentation

## Endpoints

### Get Agent
Retrieves an agent's information by agent id.

**Endpoint:** `GET /agent/{agent_id}`

**Parameters:**
- `agent_id` (path) - string, required: Unique identifier of the agent

### Create Agent
Creates a new agent with specified configuration.

**Endpoint:** `POST /agent`

**Request Body:**
```json
{
{
"agent_config": {
"agent_name": "Alfred",
"agent_type": "other",
"agent_welcome_message": "How are you doing Bruce?",
"tasks": [
{
"task_type": "conversation",
"toolchain": {
"execution": "parallel",
"pipelines": [
[
"transcriber",
"llm",
"synthesizer"
]
]
},
"tools_config": {
"input": {
"format": "wav",
"provider": "twilio"
},
"llm_agent": {
"agent_type": "simple_llm_agent",
"agent_flow_type": "streaming",
"routes": null,
"llm_config": {
"agent_flow_type": "streaming",
"provider": "openai",
"request_json": true,
"model": "gpt-4o-mini"
}
},
"output": {
"format": "wav",
"provider": "twilio"
},
"synthesizer": {
"audio_format": "wav",
"provider": "elevenlabs",
"stream": true,
"provider_config": {
"voice": "George",
"model": "eleven_turbo_v2_5",
"voice_id": "JBFqnCBsd6RMkjVDRZzb"
},
"buffer_size": 100.0
},
"transcriber": {
"encoding": "linear16",
"language": "en",
"provider": "deepgram",
"stream": true
}
},
"task_config": {
"hangup_after_silence": 30.0
}
}
]
},
"agent_prompts": {
"task_1": {
"system_prompt": "Why Do We Fall, Sir? So That We Can Learn To Pick Ourselves Up."
}
}
}



}
```

**Response:**
```json
200 OK
{
"agent_id": "uuid-string",
"state": "created"
}
```

### Edit Agent
Updates an existing agent's configuration.

**Endpoint:** `PUT /agent/{agent_id}`

**Parameters:**
- `agent_id` (path) - string, required: Unique identifier of the agent

**Request Body:**
Same as Create Agent endpoint


### Delete Agent
Deletes an agent from the system.

**Endpoint:** `DELETE /agent/{agent_id}`

**Parameters:**
- `agent_id` (path) - string, required: Unique identifier of the agent

**Response:**
```json
200 OK
{
"agent_id": "string",
"state": "deleted"
}
```


### Get All Agents
Retrieves all agents from the system.

**Endpoint:** `GET /all`

**Response:**
```json
200 OK
{
"agents": [
{
"agent_id": "string",
"data": {
// Agent configuration object
}
}
]
}
```
16 changes: 16 additions & 0 deletions local_setup/quickstart_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,22 @@ async def edit_agent(agent_id: str, agent_data: CreateAgentPayload = Body(...)):
logger.error(f"Error updating agent {agent_id}: {e}", exc_info=True)
raise HTTPException(status_code=500, detail="Internal server error")

@app.delete("/agent/{agent_id}")
async def delete_agent(agent_id: str):
"""Deletes an agent by ID."""
try:
agent_exists = await redis_client.exists(agent_id)
if not agent_exists:
raise HTTPException(status_code=404, detail="Agent not found")

await redis_client.delete(agent_id)
return {"agent_id": agent_id, "state": "deleted"}

except Exception as e:
logger.error(f"Error deleting agent {agent_id}: {e}", exc_info=True)
raise HTTPException(status_code=500, detail="Internal server error")


@app.get("/all")
async def get_all_agents():
"""Fetches all agents stored in Redis."""
Expand Down

0 comments on commit d2f04bc

Please sign in to comment.