Protect Your AI App
Gate model calls with the new Axiom scanning backend.
1. Endpoint and Auth
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json{ "content": "user input goes here" }2. Response Handling
An allow action alone does not prove that protection completed. The protected-turn helper checks scan completion, enforces blocks and applies semantic routing before releasing a response. Keep failure behavior closed and display only a displayed result.
Your application owns approved responses, review delivery and session termination. A flagged mention may continue; prohibited intent follows the selected profile's intervention policy. Monitor mode observes proposed decisions without enforcing normal policy blocks.
3. Examples
Install the supplied SDK bundle server-side. Supply the response map, buffered generation and review/termination callbacks used below. The curl request only inspects a decision. Guard retrieval and tools separately before using retrieved content or executing tool calls.
curl -X POST "https://api.axiomsecurity.dev/v1/scan/input" \
-H "Authorization: Bearer $AXIOM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"Review this customer request"}'import { AxiomClient, runProtectedTurn } from "@axiom/sdk";
const axiom = new AxiomClient({
apiKey: process.env.AXIOM_API_KEY!,
baseUrl: "https://api.axiomsecurity.dev",
failurePolicy: { input: "closed", output: "closed", retrieval: "closed", tool: "closed" },
timeouts: { scanMs: 60000, toolGuardMs: 3000 },
});
// Reuse this handle for one end-user chat, never across unrelated users.
const conversation = axiom.conversation();
const result = await runProtectedTurn({
input: userMessage,
approvedResponses,
scanInput: (text) => conversation.scanInput(text),
generate: generateBufferedResponse,
scanOutput: (text) => conversation.scanOutput(text),
requireCompleteProtection: true,
streaming: false,
onReview: routeReview,
onTerminate: closeConversation,
});
if (result.status === "displayed") {
displayToUser(result.displayedText);
}import os
from axiom_sdk import AxiomClient, run_protected_turn
axiom = AxiomClient(
api_key=os.environ["AXIOM_API_KEY"],
base_url="https://api.axiomsecurity.dev",
failure_policy={"input": "closed", "output": "closed", "retrieval": "closed", "tool": "closed"},
timeout_s={"input": 60, "output": 60, "retrieval": 60, "tool": 3},
)
# Reuse this handle for one end-user chat, never across unrelated users.
conversation = axiom.conversation()
result = run_protected_turn(
user_input=user_message,
approved_responses=approved_responses,
scan_input=conversation.scan_input,
generate=generate_buffered_response,
scan_output=conversation.scan_output,
require_complete_protection=True,
streaming=False,
on_review=route_review,
on_terminate=close_conversation,
)
if result.status == "displayed":
display_to_user(result.displayed_text)AXIOM_API_KEY=ax_live_your_generated_key
AXIOM_API_BASE=https://api.axiomsecurity.dev