# API エンドポイント

{% hint style="info" %}
現在公開されている API 以外に、利用したい API がある場合は、<support@citadel-ai.com> までご連絡ください。
{% endhint %}

Citadel Radar では、API キーを使ってアプリケーションから API を呼び出し、ユーザー入力と AI 出力を監視できます。必要に応じて、対象のリクエストをブロックできます。

## Run Input Filtering

> Run input-target blocking metrics, return pass/fail, then enqueue input monitoring.

```json
{"openapi":"3.1.0","info":{"title":"Citadel Radar Node Public API","version":"0.1.0"},"security":[{"APIKeyHeader":[]}],"components":{"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"InputBlockingRequestBody":{"properties":{"prompt":{"type":"string","minLength":1,"title":"Prompt"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional arbitrary key-value metadata from the caller (e.g. client IP)."}},"type":"object","required":["prompt"],"title":"InputBlockingRequestBody"},"InputBlockingResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id"],"title":"InputBlockingResponse","description":"Successful (HTTP 200) response.\n\nNo evaluator failed — ``block`` and ``failed_evaluation_metric_ids`` are\ndecided entirely by metric outcomes."},"InputBlockingPolicyErrorResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/PolicyEvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. At least one entry has ``code='content_policy'`` or ``code='cyber_policy'``."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"InputBlockingPolicyErrorResponse","description":"HTTP 400 response: at least one evaluator hit a content / cyber policy."},"PolicyEvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","enum":["content_policy","cyber_policy","other"],"title":"Code","description":"Classified evaluator failure code (no rate_limit on 400)."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"PolicyEvaluatorErrorItem","description":"Evaluator failure item for 400 responses (rate_limit excluded).\n\nA response is classified 400 only when no metric hit ``rate_limit``; the\nsurviving codes are policy-related or generic."},"InputBlockingEvaluatorErrorResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/GenericEvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. Every entry has ``code='other'``."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"InputBlockingEvaluatorErrorResponse","description":"HTTP 422 response: evaluator failure that did not match a specific code."},"GenericEvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","const":"other","title":"Code","description":"Always ``other`` on 422 responses."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"GenericEvaluatorErrorItem","description":"Evaluator failure item for 422 responses (only ``other`` codes).\n\nA response is classified 422 only when every errored metric has the\n``other`` classification (no rate-limit, no content/cyber-policy hit)."},"InputBlockingRateLimitResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/EvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. At least one entry has ``code='rate_limit'``; other entries may carry any code."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"InputBlockingRateLimitResponse","description":"HTTP 429 response: at least one evaluator was rate-limited."},"EvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","enum":["rate_limit","content_policy","cyber_policy","other"],"title":"Code","description":"Classified evaluator failure code. One of: rate_limit, content_policy, cyber_policy, other."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"EvaluatorErrorItem","description":"Evaluator failure item (any classification code, used in 429 responses)."}}},"paths":{"/apps/{app_id}/input_filtering":{"post":{"tags":["app-filtering"],"summary":"Run Input Filtering","description":"Run input-target blocking metrics, return pass/fail, then enqueue input monitoring.","operationId":"run_input_filtering_apps__app_id__input_filtering_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputBlockingRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputBlockingResponse"}}}},"400":{"description":"Content / cyber security policy blocked the evaluator request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputBlockingPolicyErrorResponse"}}}},"422":{"description":"The evaluator request failed for a non-policy / non-rate-limit reason (connection error, auth error, parse error, misconfigured metric, ...).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputBlockingEvaluatorErrorResponse"}}}},"429":{"description":"The evaluator provider rate-limited the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputBlockingRateLimitResponse"}}}}}}}}}
```

## Run Output Filtering

> Run output-target blocking metrics, return pass/fail, then enqueue output monitoring.

```json
{"openapi":"3.1.0","info":{"title":"Citadel Radar Node Public API","version":"0.1.0"},"security":[{"APIKeyHeader":[]}],"components":{"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"OutputBlockingRequestBody":{"properties":{"prompt":{"type":"string","minLength":1,"title":"Prompt"},"response":{"type":"string","title":"Response","description":"Assistant / model output to evaluate (may be empty if generation failed).","default":""},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional arbitrary key-value metadata from the caller (e.g. client IP)."}},"type":"object","required":["prompt"],"title":"OutputBlockingRequestBody"},"OutputBlockingResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id"],"title":"OutputBlockingResponse","description":"Successful (HTTP 200) response.\n\nNo evaluator failed — ``block`` and ``failed_evaluation_metric_ids`` are\ndecided entirely by metric outcomes."},"OutputBlockingPolicyErrorResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/PolicyEvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. At least one entry has ``code='content_policy'`` or ``code='cyber_policy'``."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"OutputBlockingPolicyErrorResponse","description":"HTTP 400 response: at least one evaluator hit a content / cyber policy."},"PolicyEvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","enum":["content_policy","cyber_policy","other"],"title":"Code","description":"Classified evaluator failure code (no rate_limit on 400)."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"PolicyEvaluatorErrorItem","description":"Evaluator failure item for 400 responses (rate_limit excluded).\n\nA response is classified 400 only when no metric hit ``rate_limit``; the\nsurviving codes are policy-related or generic."},"OutputBlockingEvaluatorErrorResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/GenericEvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. Every entry has ``code='other'``."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"OutputBlockingEvaluatorErrorResponse","description":"HTTP 422 response: evaluator failure that did not match a specific code."},"GenericEvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","const":"other","title":"Code","description":"Always ``other`` on 422 responses."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"GenericEvaluatorErrorItem","description":"Evaluator failure item for 422 responses (only ``other`` codes).\n\nA response is classified 422 only when every errored metric has the\n``other`` classification (no rate-limit, no content/cyber-policy hit)."},"OutputBlockingRateLimitResponse":{"properties":{"block":{"type":"boolean","title":"Block"},"failed_evaluation_metric_ids":{"items":{"type":"integer"},"type":"array","title":"Failed Evaluation Metric Ids","description":"Core evaluation_metric_id values that did not overall_pass."},"request_id":{"type":"string","format":"uuid","title":"Request Id"},"evaluator_errors":{"items":{"$ref":"#/components/schemas/EvaluatorErrorItem"},"type":"array","title":"Evaluator Errors","description":"Per-metric evaluator failures. At least one entry has ``code='rate_limit'``; other entries may carry any code."}},"type":"object","required":["block","failed_evaluation_metric_ids","request_id","evaluator_errors"],"title":"OutputBlockingRateLimitResponse","description":"HTTP 429 response: at least one evaluator was rate-limited."},"EvaluatorErrorItem":{"properties":{"evaluation_metric_id":{"type":"integer","title":"Evaluation Metric Id","description":"Core evaluation_metric_id that the evaluator failed to evaluate."},"code":{"type":"string","enum":["rate_limit","content_policy","cyber_policy","other"],"title":"Code","description":"Classified evaluator failure code. One of: rate_limit, content_policy, cyber_policy, other."},"message":{"type":"string","title":"Message","description":"Human-readable failure reason (provider message when available)."}},"type":"object","required":["evaluation_metric_id","code","message"],"title":"EvaluatorErrorItem","description":"Evaluator failure item (any classification code, used in 429 responses)."}}},"paths":{"/apps/{app_id}/output_filtering":{"post":{"tags":["app-filtering"],"summary":"Run Output Filtering","description":"Run output-target blocking metrics, return pass/fail, then enqueue output monitoring.","operationId":"run_output_filtering_apps__app_id__output_filtering_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputBlockingRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputBlockingResponse"}}}},"400":{"description":"Content / cyber security policy blocked the evaluator request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputBlockingPolicyErrorResponse"}}}},"422":{"description":"The evaluator request failed for a non-policy / non-rate-limit reason (connection error, auth error, parse error, misconfigured metric, ...).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputBlockingEvaluatorErrorResponse"}}}},"429":{"description":"The evaluator provider rate-limited the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputBlockingRateLimitResponse"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.radar.citadel-ai.com/developer-guide/api-endpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
