---
title: "POST /_acuvity/scan"
method: POST
path: "/_acuvity/scan"
tags: ["apex"]
---

# POST /_acuvity/scan

`POST /_acuvity/scan`

Processes the scan request.

## Request body

- Scanrequest — This is a scan request.
  - `analyzers` string[] — The analyzers parameter allows for customizing which analyzers should be used, overriding the default selection. Each analyzer entry can optionally include a prefix to modify its behavior: - No prefix: Runs only the specified analyzers and any dependencies required for deeper analysis (slower but more acurate). - '+' (enable): Activates an analyzer that is disabled by default. - '-' (disable): Disables an analyzer that is enabled by default. - '@' (direct execution): Runs the analyzer immediately, bypassing the deeper analysis (faster but less acurate). An analyzers entry can be specified using: - The analyzer name (e.g., 'Toxicity detector') - The analyzer ID (e.g., 'en-text-toxicity-detector') - The analyzer group (e.g., 'Detectors') - A detector name (e.g., 'toxic') - A detector label (e.g., 'insult') - A detector group (e.g., 'Malcontents') If left empty, all default analyzers will be executed.
  - `annotations` object — Annotations attached to the request.
  - `anonymization` 'FixedSize' | 'VariableSize' — How to anonymize the data. If deanonymize is true, then VariablSize is required.
  - `destination` Requestdestination — RequestDestination holds the destination information for a request. When app and component are set, the request is evaluated against the app component's policies instead of a provider. In that case, the provider field must not be set.
    - `app` string — The name of the destination application.
    - `component` string — The component of the destination application.
    - `host` string — The host name of the destination. Optional, for logging enrichment.
    - `ip` string — The destination IP address. Optional, for logging enrichment.
    - `port` integer — The destination port of the request. Optional: when it is not set, 443 is assumed. It is made available to policies as destinationPort.
  - `direction` 'Egress' | 'Ingress' — The direction of the traffic for this request, relative to the app component the caller's token identifies. Determines whether the ingress or the egress policies of that app component are evaluated.
  - `extractions` Extractionrequest[] — The extractions to request.
    - `annotations` object — Annotations attached to the extraction.
    - `data` string, byte — The binary data to request extraction for.
    - `internal` boolean — If true, this extraction is for internal use only. This can be used by agentic systems to mark an extraction as internal only as opposed to user facing.
    - `isFile` boolean — If true, the data of the extraction is a file.
    - `isStored` boolean — If true, indicates that the file has been stored.
    - `kind` 'Message' | 'Thinking' | 'ToolDefinition' | 'ToolInput' | 'ToolOutput' | 'File' | 'Resource' | 'Event' — The kind of content carried by this extraction. Used together with role to label what the extracted blob represents so the UI can render it correctly and analyzers can dispatch appropriately: - Message: free-form natural language (default). - Thinking: model reasoning trace (e.g. Anthropic thinking, OpenAI reasoning, Gemini thought). - ToolDefinition: tool/function schema advertised to the model (name, description, JSON schema). - ToolInput: structured arguments the model passes when invoking a tool. - ToolOutput: result returned to the model after a tool call. - File: uploaded or attached file payload. - Resource: externally-supplied context injected into the prompt (RAG document, search result, MCP resource). - Event: control or lifecycle marker with no analyzable content.
    - `label` string — Contains events and other information that are not actual user content, and will not go through analysis.
    - `role` 'User' | 'Assistant' | 'System' | 'Tool' — The role of the message represented by this extraction.
    - `toolResults` Toolresult[] — Tool call results which are passed in to this request.
      - `callID` string, required — The ID of the tool use as previously returned by a tool use response.
      - `content` string — The content of the tool call results.
      - `isError` boolean — Indicates if the tool call failed.
      - `name` string — The name of the tool used.
      - `serverName` string — The server name of the tool used.
    - `toolUses` Tooluse[] — Tool uses as requested by a model.
      - `callID` string, required — The ID of the tool use which the user or application must pass when posting back the tool call results.
      - `input` string — The input to the tool call. This should be a JSON object which must conform to the JSON schema as was previously defined for the tool.
      - `name` string, required — The name of the tool to call.
      - `serverName` string — The name of the remote MCP server that will execute this call.
  - `keywords` string[] — The keywords found during classification.
  - `messages` string[] — Messages to process and provide detections for. Use data in extractions for processing binary data.
  - `model` string — The model used by the request.
  - `provider` string — The name of the provider to use for policy resolutions. Must not be set when destination app and component are set.
  - `redactContent` boolean — If true, the user data is removed from the logged roundtrip, while the analysis and all other metadata are kept. This only affects what is logged: the response of this call always carries the full content.
  - `redactContentBypass` boolean — If true, and redactContent is also true, the user data is kept in the logged roundtrip whenever the decision reports a violation, so that the content behind a denial stays available for review. It has no effect on its own.
  - `redactions` string[] — The redactions to perform if they are detected.
  - `source` Requestsource — RequestSource holds the information about where a request originates from. On egress, the source is the app component the caller's token identifies, and this only carries optional enrichment. On ingress, the source is whoever is calling into that app component, and the token field identifies it. The username and userClaims are only used when no token is given, or when the given token carries no user identity of its own: identity derived from a validated token always wins over identity asserted in the request body.
    - `ip` string — The source IP address of the request. Optional, for logging enrichment.
    - `token` string — A valid token identifying the source of the request. Only applicable when the direction is Ingress. This can either be a component token, in which case the request principal is populated with the source app and component identity, or a token issued for an application component OAuth client, in which case the source app and component as well as the user identity are both derived from it.
    - `userClaims` string[] — The optional user claims of the request. This can be an incomplete list, and claims can be mapped to different keys.
    - `username` string — The optional username of the request.
  - `tools` object — The various tools used by the request.
  - `trace` Traceref — Holds all references to a trace which are also the essentials of the span data.
    - `kind` 'Unspecified' | 'Internal' | 'Server' | 'Client' | 'Producer' | 'Consumer' — The kind of the span.
    - `parentSpanID` string — The parent span ID that is being referenced as hex encoded string.
    - `spanEnd` string, date-time, required — When the span ended.
    - `spanID` string, required — The span ID that is being referenced.
    - `spanName` string, required — The name of the span that is being collected.
    - `spanStart` string, date-time, required — When the span started.
    - `statusCode` 'Unset' | 'OK' | 'Error' — Status Code of a span.
    - `statusMessage` string — A developer-facing human readable error message.
    - `traceID` string, required — The Trace ID that is being referenced as hex encoded string.
    - `transparentSpanID` string — The transparent span ID that is being referenced. If the application operates in transparent tracing mode, then this field must be set to the span ID that this span is originally referencing.
  - `type` 'Input' | 'Output' — The type of text.

## Response `200`

Successfully processing a scan request returns a scan response.

- Scanresponse — This is a scan response.
  - `ID` string — ID is the identifier of the object.
  - `alerts` Alertevent[] — List of alerts that got raised during the policy resolution.
    - `alertDefinition` string, required — The name of the alert definition that triggered the alert event.
    - `alertDefinitionNamespace` string — The namespace of the alert definition.
    - `principal` Principal, required — Describe the principal.
      - `IP` string — The source IP address of the request.
      - `app` Principalapp — Describes the principal information of an application.
        - `component` string — The component of the application request.
        - `labels` string[] — The list of labels attached to an application request.
        - `name` string — The name of the application.
        - `userClaims` string[] — The optional user claims of the request. This can be an incomplete list, and claims can be mapped to different keys.
        - `username` string — The optional username of the request.
        - `workloadGroupHash` string — The hash of the workload group this application belongs to.
        - `workloadGroupLabel` string — The label format of the workload group this application belongs to.
        - `workloadGroupSetHash` string — The hash of the workload group set this application belongs to.
        - `workloadGroupSetLabel` string — The label format of the workload group set this application belongs to.
      - `authType` 'Certificate' | 'UserToken' | 'AppToken' | 'Hostname' | 'Token' | 'ComponentToken' | 'External' — The type of authentication.
      - `claims` string[] — List of claims extracted from the user query.
      - `external` Principalexternal — Describes the principal information of an external request.
        - `userClaims` string[] — The optional user claims of the request. This can be an incomplete list, and claims can be mapped to different keys.
        - `username` string — The optional username of the request.
        - `workloadGroupHash` string — The hash of the workload group this application belongs to.
        - `workloadGroupLabel` string — The label format of the workload group this application belongs to.
        - `workloadGroupSetHash` string — The hash of the workload group set this application belongs to.
        - `workloadGroupSetLabel` string — The label format of the workload group set this application belongs to.
      - `teams` string[] — The teams that were used to authorize the request.
      - `tokenID` string — The ID (jid) of the token, if any.
      - `tokenName` string — The name of the token, if any.
      - `type` 'User' | 'App' | 'External', required — The type of principal.
      - `user` Principaluser — Describes the principal information of a user.
        - `name` string — Identification bit that will be used to identify the origin of the request.
        - `untrusted` boolean — If true, the data is not fully trusted (eg. loose identity).
    - `provider` string — The provider used that the alert came from.
    - `timestamp` string, date-time — When the alert event was raised.
  - `annotations` object — Annotations attached to the log.
  - `client` string — The client used to send the request.
  - `clientVersion` string — The version of the client used to send the request.
  - `contentRedacted` boolean — If true, the content of the extractions was stripped from the audit entry for this request, and only the analysis and other metadata were kept. It reports what actually happened, which is not the same as what was requested: redactContentBypass can leave the content in place.
  - `decision` 'Deny' | 'Allow' | 'Ask' | 'Report' | 'Bypassed' | 'ForbiddenUser' | 'Skipped' | 'Redirected' | 'NotApplicable' | 'Error' | 'UpstreamError' — User-facing outcome of the roundtrip. Reflects the policy engine's verdict, or in case of platform failure, the result of the failClose strategy (Deny on fail-close, Allow on fail-open, with structured error field carring the detail). NotApplicable is used by the scan and police APIs, which analyze content without rendering an enforcement decision. Error and UpstreamError stay in the allowed_choices list for backward compatibility with clients that still PUT those values; new round-trips never emit them — platform/upstream failures now surface via the structured Error field instead. NOTE: safe to drop Error and UpstreamError from this enum on or after 2026-07-19 (two months after the structured RoundtripError landed on 2026-05-19), once consumers have rolled forward.
  - `destination` Destination — Represents the destination that this request was made to.
    - `app` string — The name of the application that the domain belongs to.
    - `component` string — The component of the application that the domain belongs to.
    - `host` string — The host name of the request. Optional, matching the destination of a scan or police request: the caller may omit it, and it is only filled in when the resolved provider or app component declares a host of its own.
    - `ip` string — The destination IP address of the request.
    - `labels` string[] — The list of labels attached to the application request destination.
    - `workloadGroupHash` string — The hash of the workload group this application belongs to.
    - `workloadGroupLabel` string — The label format of the workload group this application belongs to.
    - `workloadGroupSetHash` string — The hash of the workload group set this application belongs to.
    - `workloadGroupSetLabel` string — The label format of the workload group set this application belongs to.
  - `error` Roundtriperror — Structured error info attached to a roundtrip when a non-user-facing platform stage or the upstream provider failed. Carries the platform-side detail (type, stage, message) for debugging and provider-health derivation. The Decision field still reflects the policy/processing outcome per existing semantics.
    - `message` string — Human-readable error message.
    - `previousDecision` 'Deny' | 'Allow' | 'Ask' | 'Report' | 'Bypassed' | 'ForbiddenUser' | 'Skipped' | 'Redirected' | 'NotApplicable' — The decision produced before the failClose or failOpen mutation flipped it. Set only when the user-facing Decision is the result of a platform-error override, so the audit log can surface what the policy would have decided otherwise.
    - `stage` 'Extraction' | 'Analysis' | 'ContentPolicy' | 'AssignPolicy' | 'AccessPolicy' | 'Upstream' — The pipeline component that produced the error. Combined with the Type axis on the parent round-trip (Input/Output) and the Offband flag, gives the full discrimination of where a platform/upstream failure originated. Each value maps to an ownership tier: Proofpoint AI Security-owned (Extraction, Analysis, AssignPolicy, AccessPolicy), customer-owned (ContentPolicy), provider-owned (Upstream).
    - `type` 'PlatformError' | 'UpstreamError' — The source of the failure. PlatformError covers apex-side stages (Extraction, Analysis, ContentPolicy, AccessPolicy). UpstreamError covers anything attributable to the upstream provider (transport failures or non-2xx HTTP responses).
  - `extractions` Extraction[] — The extractions to log.
    - `PIIs` object — The PIIs found during classification. The current list can be obtained through the analyzers API by searching for detector groups 'PIIs' accross all analyzers. Example of PIIs detected: aba_routing_number, address, bank_account, bitcoin_wallet, credit_card, driver_license, email_address, itin_number, location, medical_license, money_amount, passport_number, person, phone_number, ssn. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `annotations` object — Annotations attached to the extraction.
    - `categories` Modality[] — The categories are remapping of the modalities in a more human friendly way.
      - `group` string, required — The group of data. The current list can be obtained through the analyzers API by searching for detector groups in the 'Modality' analyzer group. Example of group: application, archive, audio, code, document, executable, font, image, text, unknown, video.
      - `type` string, required — The type of data. The current list can be obtained through the analyzers API by searching for detector names in the 'Modality' analyzer group. Example of type: 3dsm, 3gp, 3mf, ace, ada, ai, apk, applebplist, appleplist, ar, arc, arj, asc, asf, asm, asp, au, autohotkey, autoit, avi, avif, awk, ax, batch, bazel, bcad, bib, bmp, bpg, brainfuck, brf, bzip, bzip3, c, cab, cat, cdf, chm, clojure, cmake, cobol, coff, coffeescript, com, cpl, cpp, crt, crx, cs, csproj, css, csv, dart, deb, dex, dey, dicom, diff, django, dll, dm, dmg, dmigd, dmscript, doc, dockerfile, docx, dotx, dwg, dxf, dylib, elf, elixir, emf, eml, epub, erb, erlang, exe, flac, flv, fortran, fpx, gemfile, gemspec, gif, gitattributes, gitmodules, gleam, go, gradle, groovy, gzip, h, h5, handlebars, haskell, hcl, heif, hlp, hpp, hta, htaccess, html, hwp, icns, ico, ics, ignorefile, ini, internetshortcut, ipynb, iso, jar, java, javabytecode, javascript, jinja, jng, jnlp, jp2, jpeg, json, jsonl, jsx, julia, jxl, ko, kotlin, latex, lha, license, lisp, lnk, lock, lua, lz, lz4, m3u, m4, macho, makefile, markdown, matlab, mht, midi, mkv, mp3, mp4, mpegts, mscompress, msi, msix, mui, mum, npy, npz, objectivec, ocaml, ocx, odex, odin, odp, ods, odt, ogg, one, onnx, otf, outlook, pascal, pcap, pdb, pdf, pebin, pem, perl, php, pickle, png, po, postscript, powershell, ppt, pptx, prolog, proteindb, proto, psd, python, pythonbytecode, pytorch, qoi, qt, r, randomascii, rar, rdf, rlib, rll, rpm, rst, rtf, ruby, rust, scala, scheme, scr, scss, sevenzip, sgml, shell, smali, snap, so, solidity, sql, sqlite, squashfs, srt, stlbinary, stltext, sum, svg, swf, swift, symlinktext, sys, tar, tcl, textproto, tga, thumbsdb, tiff, toml, torrent, tsv, tsx, ttf, twig, txt, txtascii, txtutf16, txtutf8, typescript, vba, vbe, vcxproj, verilog, vhdl, visio, vtt, vue, wad, wasm, wav, webm, webp, webtemplate, winregistry, wma, wmf, wmv, woff, woff2, xar, xcf, xls, xlsb, xlsx, xml, xpi, xz, yaml, yara, zig, zip, zlibstream, zst.
    - `confidentiality` number — The level of general confidentiality of the input.
    - `customDataTypes` object — The custom data types found during classification. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `data` string — The data extracted.
    - `dataSets` object — The data sets found during classification.
    - `detections` Textualdetection[] — The textual detections found while applying policies.
      - `end` integer — The end position of the detection in the original data.
      - `key` string — The key that is used in the name's place, If empty, a sequence of X's are used.
      - `name` string — The name of the detection.
      - `redacted` boolean — If true this detection has been redacted.
      - `redactedEnd` integer — The end position of the detection in the redacted data.
      - `redactedStart` integer — The start position of the detection in the redacted data.
      - `score` number — The confidence score of the detection.
      - `start` integer — The start position of the detection in the original data.
      - `type` 'Keyword' | 'PII' | 'Secret' | 'CDT' — The type of detection.
    - `exploits` object — The various exploits attempts. The current list can be obtained through the analyzers API by searching for detector groups 'Exploits' accross all analyzers. Example of exploits detected: jailbreak, prompt_injection, malicious_url. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `hash` string — The hash of the extraction.
    - `intent` object — The estimated intent embodied into the text. The current list can be obtained through the analyzers API by searching for detector groups 'Intent' accross all analyzers. Example of intent detected: explain, outline, summarize, write. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `internal` boolean — If true, this extraction is for internal use only. This can be used by agentic systems to mark an extraction as internal only as opposed to user facing.
    - `isFile` boolean — If true, the data of the extraction is a file.
    - `isStored` boolean — If true, indicates that the file has been stored.
    - `keywords` object — The keywords found during classification. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `kind` 'Message' | 'Thinking' | 'ToolDefinition' | 'ToolInput' | 'ToolOutput' | 'File' | 'Resource' | 'Event' — The kind of content carried by this extraction. Used together with role to label what the extracted blob represents so the UI can render it correctly and analyzers can dispatch appropriately: - Message: free-form natural language (default). - Thinking: model reasoning trace (e.g. Anthropic thinking, OpenAI reasoning, Gemini thought). - ToolDefinition: tool/function schema advertised to the model (name, description, JSON schema). - ToolInput: structured arguments the model passes when invoking a tool. - ToolOutput: result returned to the model after a tool call. - File: uploaded or attached file payload. - Resource: externally-supplied context injected into the prompt (RAG document, search result, MCP resource). - Event: control or lifecycle marker with no analyzable content.
    - `label` string — Contains events and other information that are not actual user content, and will not go through analysis.
    - `languages` object — The language of the classification. The current list can be obtained through the analyzers API by searching for detector groups 'Languages' accross all analyzers. Example of languages: chinese, english, french, german, gibberish, japanese, russian, spanish. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `malcontents` object — The various malcontents attempts. The current list can be obtained through the analyzers API by searching for detector groups 'Malcontents' accross all analyzers. Example of malcontents: biased, harmful, toxic. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `modalities` Modality[] — The modalities of data detected in the data.
      - `group` string, required — The group of data. The current list can be obtained through the analyzers API by searching for detector groups in the 'Modality' analyzer group. Example of group: application, archive, audio, code, document, executable, font, image, text, unknown, video.
      - `type` string, required — The type of data. The current list can be obtained through the analyzers API by searching for detector names in the 'Modality' analyzer group. Example of type: 3dsm, 3gp, 3mf, ace, ada, ai, apk, applebplist, appleplist, ar, arc, arj, asc, asf, asm, asp, au, autohotkey, autoit, avi, avif, awk, ax, batch, bazel, bcad, bib, bmp, bpg, brainfuck, brf, bzip, bzip3, c, cab, cat, cdf, chm, clojure, cmake, cobol, coff, coffeescript, com, cpl, cpp, crt, crx, cs, csproj, css, csv, dart, deb, dex, dey, dicom, diff, django, dll, dm, dmg, dmigd, dmscript, doc, dockerfile, docx, dotx, dwg, dxf, dylib, elf, elixir, emf, eml, epub, erb, erlang, exe, flac, flv, fortran, fpx, gemfile, gemspec, gif, gitattributes, gitmodules, gleam, go, gradle, groovy, gzip, h, h5, handlebars, haskell, hcl, heif, hlp, hpp, hta, htaccess, html, hwp, icns, ico, ics, ignorefile, ini, internetshortcut, ipynb, iso, jar, java, javabytecode, javascript, jinja, jng, jnlp, jp2, jpeg, json, jsonl, jsx, julia, jxl, ko, kotlin, latex, lha, license, lisp, lnk, lock, lua, lz, lz4, m3u, m4, macho, makefile, markdown, matlab, mht, midi, mkv, mp3, mp4, mpegts, mscompress, msi, msix, mui, mum, npy, npz, objectivec, ocaml, ocx, odex, odin, odp, ods, odt, ogg, one, onnx, otf, outlook, pascal, pcap, pdb, pdf, pebin, pem, perl, php, pickle, png, po, postscript, powershell, ppt, pptx, prolog, proteindb, proto, psd, python, pythonbytecode, pytorch, qoi, qt, r, randomascii, rar, rdf, rlib, rll, rpm, rst, rtf, ruby, rust, scala, scheme, scr, scss, sevenzip, sgml, shell, smali, snap, so, solidity, sql, sqlite, squashfs, srt, stlbinary, stltext, sum, svg, swf, swift, symlinktext, sys, tar, tcl, textproto, tga, thumbsdb, tiff, toml, torrent, tsv, tsx, ttf, twig, txt, txtascii, txtutf16, txtutf8, typescript, vba, vbe, vcxproj, verilog, vhdl, visio, vtt, vue, wad, wasm, wav, webm, webp, webtemplate, winregistry, wma, wmf, wmv, woff, woff2, xar, xcf, xls, xlsb, xlsx, xml, xpi, xz, yaml, yara, zig, zip, zlibstream, zst.
    - `relevance` number — The level of general organization relevance of the input. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `role` 'User' | 'Assistant' | 'System' | 'Tool' — The role of the message represented by this extraction.
    - `secrets` object — The secrets found during classification. The current list can be obtained through the analyzers API by searching for detector groups 'Secrets' accross all analyzers. Example of secrets: adafruit, alibaba, anthropic, apideck, apify, atlassian, aws_secret_key, buildkite, checkout, clickuppersonal, contentfulpersonalaccess, credentials, database_url_with_credentials, databricks, denodeploy, dfuse, digitalocean, discord_webhook, docker_hub, doppler, dropbox, endorlabs, fleetbase, flutterwave, frameio, freshdesk, fullstory, github, gitlab, gocardless, google_api, grafana, groq, huggingface, intra42, jwt, klaviyo, launchdarkly, linearapi, locationiq, mailchimp, mailgun, mapbox, maxmind, microsoft_teams_webhook, nightfall, notion, npm, openai, otp_auth_url, pagarme, paystack, planetscale, planetscaledb, portainer, posthog, postman, prefect, private_key, pubnub_publish, pubnub_subscribe, pulumi, ramp, razorpay, readme, rechargepayments, replicate, rubygems, salesforce, sendgrid, sendinblue, shopify, slack_access, slack_bot, slack_refresh, slack_user, slack_webhook, slack_workflow_webhook, sourcegraph, sourcegraphcody, squareapp, squareup, stripe, supabase, tailscale, tines_webhook, trufflehog, twilio, ubidots, voiceflow, web_url_with_credentials, zapierwebhook. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
    - `toolResults` Toolresult[] — Tool call results which are passed in to this request.
      - `callID` string, required — The ID of the tool use as previously returned by a tool use response.
      - `content` string — The content of the tool call results.
      - `isError` boolean — Indicates if the tool call failed.
      - `name` string — The name of the tool used.
      - `serverName` string — The server name of the tool used.
    - `toolUses` Tooluse[] — Tool uses as requested by a model.
      - `callID` string, required — The ID of the tool use which the user or application must pass when posting back the tool call results.
      - `input` string — The input to the tool call. This should be a JSON object which must conform to the JSON schema as was previously defined for the tool.
      - `name` string, required — The name of the tool to call.
      - `serverName` string — The name of the remote MCP server that will execute this call.
    - `topics` object — The topic of the classification. The current list can be obtained through the analyzers API, with the following conditions: 1. Includes all analyzers EXCEPT those in the 'Modality' group 2. Includes all analyzer detectors EXCEPT those in these groups: - 'Secrets' - 'Exploits' - 'Intent' - 'PIIs' - 'Malcontents' Example of topics: category/enterprise, category/healthcare, category/medical, category/personal, contains/blank_image, contains/certificate_signing_request, contains/database_url, contains/handwritten_text, contains/printed_text, contains/public_key, contains/ssh_public_key, contains/web_url, decoded/base32_data, decoded/base58_data, decoded/base64_data, decoded/base64_url_data, decoded/base85_data, decoded/hexadecimal_data, decoded/puny_code_data, decoded/quoted_printable_data, decoded/url_encoding_data, department/compliance, department/cybersecurity, department/finance, department/human_resources, department/information_technology, department/legal, department/logistics, department/marketing, department/performance_evaluation, department/product_management, department/project_management, department/sales, department/strategy, department/support, depict/check, depict/code, depict/document, depict/unclassified, depict/whiteboard, domain/commercial, domain/development, domain/financial, domain/general, domain/regulatory, domain/workforce, extracted/csv_cell_content, extracted/document_text_content, extracted/handwritten_text_content, extracted/pdf_text_content, extracted/pptx_text_content, extracted/spreadsheet_text_content, extracted/typed_text_content, timeframe/current_year, timeframe/future, timeframe/last_year, timeframe/next_year, timeframe/past, transcribed/audio_text_content. If a key is not present in the map that implies that entity was not detected. If an entity is detected then the value is a score. Here's how to interpret the scores: - confidence: 'low', 0 < score <0.33 - confidence: 'medium', 0.33 <= score < 0.66 - confidence: 'high', 0.66 <= score <= 1.
  - `hash` string — The hash of the input.
  - `latency` Latency — Holds information about latencies introduced by Apex.
    - `accessPolicy` integer — How much time it took to run the access policy in nanoseconds.
    - `analysis` integer — How much time it took to run content analysis in nanoseconds.
    - `assignPolicy` integer — How much time it took to run the assign policy in nanoseconds.
    - `contentPolicy` integer — How much time it took to run content policy in nanoseconds.
    - `extraction` integer — How much time it took to run input or output extraction in nanoseconds.
  - `mcpMessage` Mcpmessage — Represents MCP message details.
    - `direction` 'Client2Server' | 'Server2Client', required — The communication direction of the MCP message which can be from client to server, or from server to client.
    - `gatewayName` string — This is the MCP gateway name of the MCP message. This is only set for messages that are sent to or received from an MCP gateway.
    - `isError` boolean — IsError is true in case if a response is an error response as opposed to a result. Note that this is not the same as a result which has isError set to true within the result. This is a protocol level error. This will always be false for requests and notifications, and false for reponses when the response has a result.
    - `method` string — This is the method name of the request or notification. Contrary to MCP this is set on responses as well if possible in which case the format will be of the form method/params.name.
    - `paramsName` string — This is the parameters name of the request or notification.
    - `requestID` string — The ID of a request or a response. We always extract this as a string even though this can be a string or number in MCP. It is derived from the id field of a request or a response.
    - `sessionID` string — The session ID that this MCP message belongs to. This is strictly speaking not part of MCP, and this can be empty.
    - `type` 'Request' | 'Response' | 'Notification', required — The MCP message type which can be Request, Response or Notification.
  - `model` string — The model used by the request.
  - `namespace` string — The namespace of the object.
  - `pipelineName` string — The name of the particular pipeline that extracted the text.
  - `principal` Principal, required — Describe the principal.
    - `IP` string — The source IP address of the request.
    - `app` Principalapp — Describes the principal information of an application.
      - `component` string — The component of the application request.
      - `labels` string[] — The list of labels attached to an application request.
      - `name` string — The name of the application.
      - `userClaims` string[] — The optional user claims of the request. This can be an incomplete list, and claims can be mapped to different keys.
      - `username` string — The optional username of the request.
      - `workloadGroupHash` string — The hash of the workload group this application belongs to.
      - `workloadGroupLabel` string — The label format of the workload group this application belongs to.
      - `workloadGroupSetHash` string — The hash of the workload group set this application belongs to.
      - `workloadGroupSetLabel` string — The label format of the workload group set this application belongs to.
    - `authType` 'Certificate' | 'UserToken' | 'AppToken' | 'Hostname' | 'Token' | 'ComponentToken' | 'External' — The type of authentication.
    - `claims` string[] — List of claims extracted from the user query.
    - `external` Principalexternal — Describes the principal information of an external request.
      - `userClaims` string[] — The optional user claims of the request. This can be an incomplete list, and claims can be mapped to different keys.
      - `username` string — The optional username of the request.
      - `workloadGroupHash` string — The hash of the workload group this application belongs to.
      - `workloadGroupLabel` string — The label format of the workload group this application belongs to.
      - `workloadGroupSetHash` string — The hash of the workload group set this application belongs to.
      - `workloadGroupSetLabel` string — The label format of the workload group set this application belongs to.
    - `teams` string[] — The teams that were used to authorize the request.
    - `tokenID` string — The ID (jid) of the token, if any.
    - `tokenName` string — The name of the token, if any.
    - `type` 'User' | 'App' | 'External', required — The type of principal.
    - `user` Principaluser — Describes the principal information of a user.
      - `name` string — Identification bit that will be used to identify the origin of the request.
      - `untrusted` boolean — If true, the data is not fully trusted (eg. loose identity).
  - `provider` string — The provider to use.
  - `providerType` 'LLM' | 'MCPServer', required — The type of the provider.
  - `reasons` string[] — The various reasons returned by the policy engine.
  - `summary` Extractionsummary — Represents the summary of the extractions.
    - `categories` object — The categories are remapping of the modalities in a more human friendly way.
    - `confidenceLevels` object — The detected confidence levels.
    - `dataSets` object — The detected datasets.
    - `dataTypes` object — The detected dataTypes.
    - `exploits` object — The various exploits attempts.
    - `intent` object — The estimated intent embodied into the text.
    - `keywords` object — The keywords found during classification.
    - `languages` object — The language of the classification.
    - `malcontents` object — The various malcontents attempts.
    - `modalities` object — The modalities of data detected in the data.
    - `topics` object — The topic of the classification.
  - `time` string, date-time — Set the time of the message request.
  - `toolChoice` Toolchoice — Represents the tool choice that can be passed along together with tools.
    - `choice` 'Auto' | 'Any' | 'None' | 'Tool', required — Model instructions on tool choice.
    - `name` string — If choice is Tool, this will be set to the name of the tool to use.
  - `tools` object — The various tools used by the request.
  - `trace` Traceref — Holds all references to a trace which are also the essentials of the span data.
    - `kind` 'Unspecified' | 'Internal' | 'Server' | 'Client' | 'Producer' | 'Consumer' — The kind of the span.
    - `parentSpanID` string — The parent span ID that is being referenced as hex encoded string.
    - `spanEnd` string, date-time, required — When the span ended.
    - `spanID` string, required — The span ID that is being referenced.
    - `spanName` string, required — The name of the span that is being collected.
    - `spanStart` string, date-time, required — When the span started.
    - `statusCode` 'Unset' | 'OK' | 'Error' — Status Code of a span.
    - `statusMessage` string — A developer-facing human readable error message.
    - `traceID` string, required — The Trace ID that is being referenced as hex encoded string.
    - `transparentSpanID` string — The transparent span ID that is being referenced. If the application operates in transparent tracing mode, then this field must be set to the span ID that this span is originally referencing.
  - `type` 'Input' | 'Output' — The type of text.

## Other responses

- `400` — The scan request could not be decoded.
- `401` — The caller is not authenticated.
- `403` — The caller is not authorized or has a team or policy assignment issue.
- `415` — Could not find a supported content type in the provided header.
- `422` — Sending an invalid scan request returns an unprocessable entity error. Your models might be outdated.
- `429` — Too many requests. You are being rate limited.
- `500` — Processing the scan request failed because policies could not be assigned or running the analysis failed internally.

## Changes

- **2026-08-07** `36da5de45a18` — 5 warning, 8 info
  - removed the request property `accessPolicy`
  - removed the request property `app`
  - removed the request property `bypassHash`
  - removed the request property `contentPolicy`
  - …9 more

[Change history](https://skmtc.dev/acuvity/apis/apex-api/changes/_acuvity/scan/post.md)

---

[API](https://skmtc.dev/acuvity/apis/apex-api.md) · [All operations](https://skmtc.dev/acuvity/apis/apex-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/acuvity/apex-api/revisions/36da5de45a18/schema)
