Skip to main content

The big picture

This guide walks through a complete integration: your platform receives a collab pitch, pushes it into the Sight AI Outreach Agent via the REST API, and receives real-time webhook notifications as the agent triages, replies, and tracks the conversation.

Step 1: Register an OAuth client + authorize

  1. Open Integrations → Sight AI API → OAuth apps in the Sight AI app.
  2. Create a client with your app’s name and your HTTPS redirect URI (e.g. https://your-platform.com/oauth/callback). For a server-side platform, check Server-side app (issue a client secret) to register a confidential client and copy the client_id + client_secret (sai_ocsec_…) shown once. Otherwise copy just the client_id (public client).
  3. In your platform, add a “Connect Sight AI” button that redirects the user to Sight AI’s authorize endpoint with the scopes you need (webhooks:write, webhooks:read, inbox:write) + PKCE:
  4. The user picks a site and approves the scopes on Sight AI’s consent screen. Your redirect handler exchanges the code for a sai_oauth_* access token at POST /oauth/token.
See Authentication for the OAuth flow and scope model, and Webhooks for the full sequence.

Step 2: Create the webhook subscription via API

After your platform has an access token, create the webhook subscription programmatically (no dashboard form needed):
The response includes the signing secret (shown once). Store it in your environment as SIGHTAI_WEBHOOK_SECRET. See Outreach Webhooks API for the full reference, and Webhooks for the event catalog.

Step 3: Push a message

When your platform receives a collab pitch (e.g. a prospect emailed your support inbox), POST it to the ingestion endpoint:
The response includes the conversationId and opportunityId Sight AI created. Store these so you can correlate webhook events back to the original pitch.
See Outreach Inbox for the full request/response reference.
Always send an Idempotency-Key header. If the request times out or fails, you can safely retry with the same key without creating a duplicate conversation.

Step 4: Verify the signature on incoming webhooks

Your webhook handler must verify the SightAI-Signature header before processing the payload. The header is in the format t=<unix>,v1=<hex> where the hex is HMAC-SHA256 over ${timestamp}.${raw_body} using your signing secret.
See Webhooks → Verifying the signature for Python and more detail.

Step 5: Handle outreach.reply_sent

When the agent sends a reply, you’ll receive a outreach.reply_sent event:
Use the conversationId to correlate this reply with the original pitch you pushed in Step 3. Update your CRM with the reply details (e.g. “Sight AI agent replied — accepted the collab request”).

Step 6: Handle outreach.conversation_status_changed

When the conversation reaches a terminal state, you’ll receive this event:
Map this to your CRM’s deal stages:
  • resolved → “Closed — collab accepted”
  • declined → “Closed — declined”
  • awaiting_human → “Needs human review”

Step 7: Handle outreach.contact_suppressed

When a prospect opts out (or bounces / complains), you’ll receive this event. Remove them from your outbound lists immediately — continuing to email a suppressed contact risks deliverability damage.

Troubleshooting

Next steps