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:
Entity sends message → Contact routes by tags → Strand workflow → surface.platform node
- An entity sends a message to Contact with tags that match a Strand workflow exposed to the Contact integration.
- Contact triggers the workflow via the Contact-Strand integration.
- The workflow includes a Connector: Surface node, which scans the message payload (or whatever content you template in).
- 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:
- 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.
- In Strand, build (or install from a template) a workflow that:
- Triggers on a tag your entities use
- Includes a
Connector: Surfacenode that scans the message payload ({{ payload.data | tojson }}is a common choice) - Branches on
{{ payload.safe }}to take action
See Surface → Strand integration for the connector's full configuration reference.
Good use cases
- Scan agent or LLM message payloads for prompt injection before forwarding them downstream
- Detect API keys or credentials leaked into IoT or webhook traffic
- Gate downstream connectors (S3 upload, email, Slack) on a clean scan verdict
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.
Related
- File Transfer: Surface-scanned file delivery between entities
- Strand Integration: how Contact triggers Strand workflows
- Surface: Surface platform docs
Tendrl