Ava

Ava is DoiT’s AI-powered, cloud expert virtual assistant.

Ava is available through the Ava APIs, which give you programmatic access to the same guidance you see in the DoiT Console. Ava combines deep knowledge of Amazon Web Services, Google Cloud, and Microsoft Azure, with up-to-date context from DoiT resources, including the Help Center documentation and blog posts. See Ava, our AI assistant, for more details.

Use the Ava APIs to bring Ava’s cloud expertise into your own tools and workflows. You can explore Cloud Analytics data, troubleshoot issues, and get personalized recommendations.

Operations

The Ava API exposes the following operations. Select an operation to view its reference page with full request and response schema details:

Limitations

See Limitations of Eva.

Examples

Streaming (SSE) Ava Chat

Use POST https://api.doit.com/ava/v1/ask for interactive clients. For example, embed Ava in internal portals, OPS dashboards, or FinOps tools.

curl --request POST \
  --url https://api.doit.com/ava/v1/ask \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'content-type: application/json'
  --data '{
    "question": "Why did my GCP BigQuery costs spike in the last 7 days?",
  }'
data: {"answerId":"071QqacRXSZgirJBcUQt","conversationId":"DLKeJwfcO1Gh44oVwoIA"}
data: {"answer":"{\"llmStart\":\"ChatOpenAI\",\"value\":\"Thinking\"}"}
data: {"answer":"It"}
data: {"answer":"is"}
data: {"answer":" because"}
...
data: {"answer":"{\"llmEnd\":\"ChatOpenAI\"}"}

Synchronous Ava Chat

Use POST https://api.doit.com/ava/v1/askSync for one-off explanation. For example, to get inline answers for “Explain this” or “Help me understand this cost” buttons, or to enrich alerts or tickets with a short “what changed and why it matters” summary.

Default: ephemeral set to false

If ephemeral is set to false the conversation is persisted. The response includes a conversationId and answerId that can be used to continue or delete the chat.

curl --request POST \
  --url https://api.doit.com/ava/v1/askSync \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
  "ephemeral": false,	
	"question": "Summarize this ticket and suggest likely root causes and next steps. Ticket ID: 98765. Subject: BigQuery costs unexpectedly doubled. Description: Customer reports a sudden cost spike on BigQuery in project analytics-prod after enabling new on-demand dashboard queries without slots. Priority: high.",
    "conversationId": "zendesk-98765"
  }'
{
  "conversationId": "zendesk-98765",
  "answerId": "ans-42f9c7",
  "answer": "This ticket describes a sudden doubling of BigQuery costs in the analytics-prod project after enabling new on-demand dashboard queries without using slots. The most likely root causes are large, frequently run queries scanning a lot of data and lack of capacity-based pricing.\n\nNext steps: (1) Identify the most expensive queries over the last 7 days and optimize them with partitioning, clustering, or better filters. (2) Evaluate reservations or slots for this workload if the new query pattern is expected to be ongoing."
}

Ephemeral set to true

If ephemeral is set to true the conversation is not persisted and no IDs are returned. Is is recommended for programmatic consumers to use this setting.

curl --request POST \
  --url https://api.doit.com/ava/v1/askSync \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
		"ephemeral": true,
    "question": "Explain this AWS EC2 cost anomaly in plain language and suggest 2 next steps. Previous period: $1200.35, current period: $2450.92 between 2026-04-01 and 2026-04-07."
  }'
{
  "answer": "EC2 costs increased by roughly $1,250 (+104%) between 2026-04-01 and 2026-04-07, mainly due to additional on-demand instances running continuously without discounts. Next steps: (1) Confirm whether these instances are part of a new, steady-state workload and right-size them if needed. (2) If the usage is expected to continue, cover the new baseline with Savings Plans or Reserved Instances."
}

Continue a conversation

Ava uses conversationId to keep context from earlier questions and answers.

Step 1: Start a conversation

curl --request POST \
  --url https://api.doit.com/ava/v1/askSync \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
    "question": "Why did my GCP BigQuery costs spike in the last 7 days?"
  }'
{
  "answer": "Your BigQuery costs increased by about 40% week over week, mainly due to ...",
	"conversationId": "conv-12345",
  "answerId": "ans-0001"
}

Step 2: Keep the conversation going

curl --request POST \
  --url https://api.doit.com/ava/v1/askSync \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
    "question": "Can you summarize that in 2 sentences for an executive update?",
    "conversationId": "conv-12345"
  }'
{
  "answer": "BigQuery spend increased by ~40% over the last 7 days, driven by new analytics workloads scanning large tables. We should review these queries and consider reservations or slots if this becomes a steady pattern.",
	"conversationId": "conv-12345",
  "answerId": "ans-0002"
}

Submit feedback

Ava continuously improves based on real usage and feedback, so please share feedback on its responses to help us better understand and support your needs.

Use the POST https://api.doit.com/ava/v1/feedback operation to collect structured feedback and reason codes from users in your UIs. Use the answerId to link feedback to specific answers.

Example UI:

  • "Was this helpful?" buttons (👍 Yes "positive": "true" / 👎 No "positive": "false")
  • Optional text field: "Tell us what was missing or incorrect."
curl --request POST \
  --url https://api.doit.com/ava/v1/feedback \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
		"feedback": {
      "positive": true,
      "text": "Perfect level of detail for an exec summary."
    },
    "conversationId": "conv-12345",
    "answerId": "ans-0002",
  }'

Delete a conversation

Use the DELETE https://api.doit.com/ava/v1/deleteConversation operation to offer self-service “clear this chat” and to support privacy or compliance workflows (for example, auto-deleting certain investigative conversations). Use the conversationId to delete a specific chat.

Example UI:

  • Link in chat header: "Delete this conversation."
  • Confirmation text: "This removes the conversation from Ava’s history and resets its context for future questions."
curl --request DELETE \
  --url 'https://api.doit.com/ava/v1/deleteConversation?conversationId=user-1234-session-1' \
  --header 'Authorization: Bearer YOUR_API_KEY'
  --header 'accept: application/json'