Docs / Contact / integrations/surface-integration

Surface Integration

Surface scans files and text payloads for malware, prompt injection, sensitive data, and other threats. You can route Contact messages through Surface by combining Contact's tag-based routing with a Strand workflow that uses the surface.platform connector.

How it works

Contact does not call Surface directly. The integration goes through Strand:

code

Entity sends message  →  Contact routes by tags  →  Strand workflow  →  surface.platform node
  1. An entity sends a message to Contact with tags that match a Strand workflow exposed to the Contact integration.
  2. Contact triggers the workflow via the Contact-Strand integration.
  3. The workflow includes a Connector: Surface node, which scans the message payload (or whatever content you template in).
  4. Subsequent workflow steps branch on the scan result (safe, threat_level, score, etc.). For example, write clean messages to S3 and post malicious ones to Slack.

Setup

The Surface connector is auto-provisioned for platform accounts, so there are no Surface API keys to manage in Strand. To use it:

  1. Make sure the Strand integration prerequisites are met: Strand is available on the platform, your account has an active Strand plan, and your target workflow is exposed in Strand with matching tags.
  2. In Strand, build (or install from a template) a workflow that:

See Surface → Strand integration for the connector's full configuration reference.

Good use cases

What Surface scans

Surface scans files and text payloads (raw text, JSON, base64 binary). It does not scan source-code repositories or perform dependency analysis. See Surface → Detection coverage for the full list of what it catches.

File transfer scanning

Surface also powers File Transfer: every file sent between entities is scanned by Surface before it becomes downloadable, and each transfer consumes one Surface scan. When an account's monthly scan quota is exhausted, file transfer pauses until they are replenished. This is built in; you don't configure a workflow for it.