Quickstart

From the Dashboard, click the Start New Scan
button to begin configuring your scan. You’ll be directed to the scan configuration page.
Scan Settings
Basic Configuration

Scan Name
A custom name to identify your scan.
Example: Mithra LLM Demo API
URL
The full endpoint of the LLM API you want to scan.
Example: https://demo.mithrasec.com/api/chat
Configure the Request

Request Template
A template where $ATTACK
will be replaced with the payload. (If POST)
Example: {"role":"user","content":"$ATTACK"}
or UserInput: $ATTACK
Configure how your requests will be sent to the API. The request template defines how the payload ($ATTACK) is inserted into the request.
Default Template
Just sends $ATTACK as the full request body.
$ATTACK
JSON Template Example
For APIs expecting JSON input:
{
"messages": [
{
"role": "user",
"content": "$ATTACK"
}
]
}
Text Template Example
For APIs expecting plain text input:
userInput: $ATTACK
HTTP Method
Select the HTTP method used by your LLM endpoint (e.g., POST
, GET
)
Headers
Add any necessary headers, such as authentication tokens (e.g., Authorization: Bearer <token>
)
🔍 Raw Request Preview
The Raw Request Preview gives you a real-time visualization of the HTTP request that Mithra will send to the target LLM API during scanning.
This helps verify your configuration before starting the scan and ensures that the $ATTACK
placeholder is correctly placed within the request structure.
🧪 What is $ATTACK
?
$ATTACK
?$ATTACK
is a special placeholder used by Mithra to inject test payloads dynamically during the scan. It will be replaced with various crafted strings designed to detect vulnerabilities like:
Prompt Injection
Jailbreak Attempts
Sensitive Data Leaks
Response Manipulation
📄 Example
If you configure your request like this:
{
"role": "user",
"content": "$ATTACK"
}
And set the endpoint to:
https://api.example.com/chat
Mithra will display:
POST https://api.example.com/chat
{
"role": "user",
"content": "$ATTACK"
}
Each payload replaces $ATTACK
during execution.
📝 Notes
The preview is based on the values you enter in the Request Configuration section.
You can inspect it to confirm:
The payload is injected in the correct location.
Headers and HTTP method are correct.
The request body format matches the API requirements.
Analyzer Configuration

The Analyzer Configuration defines how Mithra extracts and analyzes the response from the LLM API to determine if a vulnerability exists.
This is useful when your API responses are complex or deeply nested, and you only want to inspect a specific portion of the output (e.g., the model's actual response text).
🧩 JSON Response Field
Specify which part of the JSON response should be used as the model output for analysis. You can provide:
✅ Simple Field Name
Use a single key from the root level of the response JSON.
message
✅ Nested Field Path
Use dot notation to specify nested fields.
response.content
✅ JSONPath Expression
Start with $
to use full JSONPath syntax for complex responses.
$.choices[0].message.content
📌 Examples
Example 1: Simple JSON
{
"message": "Hello, how can I help you?"
}
Field:
message
Example 2: Nested JSON
{
"response": {
"content": "I'm your AI assistant."
}
}
Field:
response.content
Example 3: OpenAI-style Response
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Sure, here's the information you asked for..."
}
}
]
}
Field:
$.choices[0].message.content
🛠️ Best Practices
JSONPath is ideal when working with APIs like OpenAI, Claude, or Mistral that return structured outputs.
⚙️ Advanced Settings
The Advanced Settings section provides greater control over how Mithra interacts with the target LLM API. These options are useful for customizing performance, handling rate limits, and bypassing specific status codes during scanning.
⏱️ Request Timeout (seconds)
Sets the maximum duration (in seconds) to wait for a response from the target API before aborting the request.
Default:
20
Increase this value for slower endpoints or large LLM responses.
🌐 Proxies
Configure HTTP/HTTPS proxies for routing requests.
Accepts a dictionary format:
{
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080"
}
Leave empty
{}
if you don’t want to use a proxy.
This is especially helpful for:
Intercepting traffic via tools like Burp Suite
Testing from specific IPs or geo-locations
📉 Rate Limit Codes
Specify a list of HTTP status codes that indicate rate limiting (e.g., 429 Too Many Requests).
Default:
[429]
When encountered, Mithra can pause, retry, or skip depending on your configuration.
This helps avoid overloading LLM APIs with strict rate limits.
🚫 Skip Codes
List of HTTP status codes that Mithra should ignore entirely during scans.
Example:
[404, 403]
These responses will be skipped from analysis and not included in scan results.
Use this to filter out known or irrelevant error responses.
Last updated