# Sendinel — Full LLM Reference > Cross-channel (email + social) operations control plane, built to be driven by AI agents. Base URL: https://sendinel.ai OpenAPI: https://sendinel.ai/api/v1/openapi.json (version 1.0) Surface: 181 REST paths · 225 MCP tools across 28 groups · 6 email providers · 10 social platforms · 5 plans · 16 public schemas --- ## What is Sendinel Sendinel orchestrates campaigns, sequences, contacts, templates, segments, and analytics across email and social media. It is NOT a sending provider — it routes through your provider of choice and publishes social through the SocialPublisher abstraction. Everything is controllable by an AI agent over the MCP server or the REST API. Two surfaces: - Standalone (sendinel.ai): you bring your own provider keys (BYOD) or use a managed plan; you create your own `snk_` API keys and MCP connections. - Bundled in Synchronex: tenants are auto-provisioned as a managed Sendinel project under a Synchronex Pro subscription, send via Sendinel infrastructure, and are driven through Synchronex's agent/CEO loop plus the brand-kit door (`POST /api/embed/brand-kit`). Cross-portfolio index: https://synchronex.ai/llms.txt --- ## Authentication - REST: `Authorization: Bearer snk_` — project-scoped (one project = one sending site/brand). - Scopes: read / write / admin (broad), or per-resource (contacts:read, contacts:write, campaigns:read, campaigns:write, templates:*, segments:*, sites:*). - MCP over HTTP uses the same key. Free-tier MCP is read-only and limited to: analytics. --- ## REST API (181 paths) All paths are prefixed with `/api/v1`. ### /advisor POST /api/v1/advisor/subject-lines — Generate or create subject line variants GET /api/v1/advisor/content-topics — Recommend content topics GET /api/v1/advisor/campaign/{id} — Get campaign advisor recommendations GET /api/v1/advisor/send-time — Recommend send times GET /api/v1/advisor/recovery-plan — Recommend deliverability recovery actions GET /api/v1/advisor/portfolio-analysis — Analyze portfolio email performance ### /ai POST /api/v1/ai/context-events — Submit Synchronex strategic context into the AI work queue ### /analytics GET /api/v1/analytics/portfolio — Cross-site portfolio email analytics rollup GET /api/v1/analytics/product-usage — Product usage analytics from PostHog for worker context GET /api/v1/analytics/overview — Site-level email overview metrics for a lookback window GET /api/v1/analytics/campaigns — Per-campaign analytics for a site over the recent lookback window GET /api/v1/analytics/engagement — Contact engagement lifecycle analytics POST /api/v1/analytics/conversion — Record a conversion event (analytics alias) GET /api/v1/analytics/performance — Email performance trends and best send times ### /approvals GET /api/v1/approvals — List approval requests GET /api/v1/approvals/{id} — Get approval status without consuming it ### /asset-links GET, POST /api/v1/asset-links — List gated asset links GET, PATCH, DELETE /api/v1/asset-links/{id} — Get a gated asset link GET /api/v1/asset-links/{id}/views — List gated asset link views ### /automations GET, POST /api/v1/automations — List automation sources GET, PATCH, DELETE /api/v1/automations/{id} — Get an automation source GET /api/v1/automations/{id}/history — List automation trigger history GET /api/v1/automations/{id}/preview — Preview recent automation source items POST /api/v1/automations/enroll — Enroll a subscriber into a triggered campaign POST /api/v1/automations/{id}/pause — Pause an automation source POST /api/v1/automations/{id}/resume — Resume an automation source POST /api/v1/automations/{id}/trigger — Trigger automation draft generation ### /blackout-dates GET /api/v1/blackout-dates — List campaign scheduling blackout dates ### /blog GET, POST /api/v1/blog — List blog posts ### /brand-brain GET, PATCH /api/v1/brand-brain — Get project brand brain settings ### /brand-kit GET /api/v1/brand-kit — Get a project's assembled brand kit (assets, templates, campaigns, brand settings) GET /api/v1/brand-kit/assets — List a project's confirmed brand assets across ALL brand kits (not scoped to a single kit) POST /api/v1/brand-kit/import-text — Import raw Brand Core / Brand Brain / Content Library / Brand Kit companion markdown text POST /api/v1/brand-kit/ingest-assets — Ingest brand assets from public HTTPS URLs into the project media library ### /campaigns GET, PATCH, DELETE /api/v1/campaigns/{id}/steps/{stepId} — Get a campaign step GET, POST /api/v1/campaigns — List campaigns GET, PATCH, DELETE /api/v1/campaigns/{id} — Get a campaign GET, PATCH /api/v1/campaigns/{id}/status — Campaign delivery status with per-channel breakdown POST /api/v1/campaigns/{id}/launch — Launch a draft campaign POST /api/v1/campaigns/{id}/clone — Clone a campaign POST /api/v1/campaigns/review — Run the campaign portfolio review GET, POST /api/v1/campaigns/{id}/steps — List campaign steps PATCH, DELETE /api/v1/campaigns/steps/{stepId} — Update a campaign step POST /api/v1/campaigns/{id}/enrollments — Enroll one contact or an entire segment into a campaign GET, DELETE /api/v1/campaigns/{id}/enrollments/{contactId} — Get one contact's campaign enrollment status POST /api/v1/campaigns/{id}/steps/{stepId}/test — Send a campaign step test email GET, POST, PATCH /api/v1/campaigns/ab-tests — Check A/B test significance GET /api/v1/campaigns/{id}/stats — Per-campaign delivery metrics ### /channels POST /api/v1/channels/send — Send an outbound channel message through the account-scoped transport POST /api/v1/channels/roster — Sync a project channel roster ### /contacts GET, POST /api/v1/contacts — List contacts POST /api/v1/contacts/import — Bulk import contacts POST /api/v1/contacts/tags — Bulk add or remove contact tags POST /api/v1/contacts/estimate — Estimate audience size from contact filters GET, PATCH, DELETE /api/v1/contacts/{id} — Get a contact POST /api/v1/contacts/{id}/unsubscribe — Globally unsubscribe a contact GET /api/v1/contacts/{id}/timeline — Get a contact activity timeline POST /api/v1/contacts/{id}/enrich — Enrich a contact from connected providers PUT /api/v1/contacts/{id}/tags — Replace or update contact tags ### /content-blocks GET, POST /api/v1/content-blocks — List reusable content blocks GET, PATCH, DELETE /api/v1/content-blocks/{id} — Get a reusable content block ### /content-sources GET /api/v1/content-sources — List content sources available to worker context ### /conversion POST /api/v1/conversion — Record a conversion event ### /dmarc GET, POST /api/v1/dmarc/monitors — List DMARC monitors GET, DELETE /api/v1/dmarc/monitors/{domain} — Get DMARC monitor detail ### /dmarc-reports GET /api/v1/dmarc-reports — List DMARC report summaries ### /domains GET, POST /api/v1/domains — List sending domains GET, DELETE /api/v1/domains/{id} — Get sending domain detail GET /api/v1/domains/{id}/health — Get sending domain health history POST /api/v1/domains/{id}/verify — Trigger sending domain verification ### /drafts GET, POST /api/v1/drafts — List AI draft artifacts GET /api/v1/drafts/{id} — Get an AI draft and its latest review POST /api/v1/drafts/{id}/approve — Approve an AI draft POST /api/v1/drafts/{id}/regenerate — Regenerate an AI draft review POST /api/v1/drafts/{id}/reject — Reject an AI draft ### /email-log GET /api/v1/email-log — List delivery events GET /api/v1/email-log/export — Export delivery events ### /embed POST /api/v1/embed/token — Issue an embed token GET /api/v1/embed/token/validate — Verify a Sendinel-issued embed token (server-to-server, for embedding platforms) ### /events GET, POST /api/v1/events — List recorded contact events ### /export GET /api/v1/export — Export tenant data ### /forms GET, POST /api/v1/forms — List signup forms GET, PATCH, DELETE /api/v1/forms/{id} — Get signup form detail GET /api/v1/forms/{id}/submissions — List signup form submissions ### /gdpr POST /api/v1/gdpr — Delete a contact and related data under GDPR workflow ### /identify POST /api/v1/identify — Identify or upsert a contact profile ### /lists GET /api/v1/lists — List contact lists with subscriber counts GET /api/v1/lists/{id}/subscribers — Page through a contact list's subscribers ### /migrations POST /api/v1/migrations/campaigns — Start a campaign migration import job GET /api/v1/migrations — List migration jobs GET /api/v1/migrations/{id} — Get a migration job and log history ### /newsletters GET, POST /api/v1/newsletters — List newsletters GET, PATCH /api/v1/newsletters/{id} — Get a newsletter GET, POST /api/v1/newsletters/{id}/issues — List newsletter issues POST /api/v1/newsletters/{id}/issues/{issueId}/schedule — Schedule a newsletter issue POST /api/v1/newsletters/{id}/issues/{issueId}/send — Send a newsletter issue now POST, DELETE /api/v1/newsletters/{id}/subscribe — Add or reactivate a newsletter subscription GET /api/v1/newsletters/{id}/subscribers — List newsletter subscribers GET /api/v1/newsletters/{id}/stats — Get newsletter stats ### /observer GET, POST /api/v1/observer/connections — List Observer Mode connections for a Synchronex account GET, DELETE /api/v1/observer/connections/{connectionId} — Get an Observer Mode connection's status ### /openapi.json GET /api/v1/openapi.json — Get the OpenAPI specification as JSON ### /org GET /api/v1/org/usage — Get organization usage GET, POST /api/v1/org/members — List organization members DELETE /api/v1/org/members/{userId} — Remove an organization member POST /api/v1/org/invitations — Create or dedupe an organization invitation GET /api/v1/org/plans — List available plan limits ### /pages GET, POST /api/v1/pages — List landing pages GET, PATCH, DELETE /api/v1/pages/{id} — Get a landing page ### /platform-connections GET /api/v1/platform-connections/{id}/events — List events for a platform connection GET, POST /api/v1/platform-connections — List platform connections DELETE /api/v1/platform-connections/{id} — Disconnect a platform connection POST /api/v1/platform-connections/{id}/import — Trigger a contact/data import for a platform connection POST /api/v1/platform-connections/{id}/triggers — Configure platform trigger mappings ### /provision POST /api/v1/provision — Provision an account-scoped messaging channel DELETE /api/v1/provision/{channel_handle} — Deprovision an account-scoped messaging channel ### /recipients GET /api/v1/recipients/{id}/export — Export recipient data ### /revenue GET /api/v1/revenue — List conversion revenue records and summary ### /scoring-rules GET, PUT /api/v1/scoring-rules — Get project scoring rules ### /segments GET, POST /api/v1/segments — List segments GET, PATCH, DELETE /api/v1/segments/{id} — Get a segment GET /api/v1/segments/{id}/preview — Preview segment membership ### /send POST /api/v1/send — Send a transactional email ### /sending-domains GET, POST /api/v1/sending-domains — List managed sending domains GET, DELETE /api/v1/sending-domains/{id} — Get a managed sending domain ### /service POST, DELETE /api/v1/service/projects/provision — Provision a Synchronex-bundled Sendinel project GET /api/v1/service/projects/{projectId} — Resolve a Sendinel project for Synchronex reconciliation POST /api/v1/service/embed-session — Mint a service embed session token ### /signatures GET, POST /api/v1/signatures — List signature blocks GET, PATCH, DELETE /api/v1/signatures/{id} — Get a signature block ### /sites PATCH /api/v1/sites/{id}/warmup — Update, pause, or resume site warmup schedule GET /api/v1/sites/{id}/dnsbl — Get latest DNSBL snapshots for a site GET /api/v1/sites/{id}/send-queue/dlq — List dead-letter queue entries for a site project GET /api/v1/sites/{id}/send-queue — Get queued and scheduled send status for a site POST /api/v1/sites/{id}/send-queue/cancel — Cancel unclaimed queued sends for a site POST /api/v1/sites/{id}/send-queue/resend — Requeue DLQ sends for a site POST /api/v1/sites/{id}/send-queue/throttle — Set or clear a per-site send throttle GET /api/v1/sites/{id}/smart-schedule — Recommend best send windows for a site GET, POST /api/v1/sites — List sites GET, PATCH /api/v1/sites/{id} — Get a site GET /api/v1/sites/{id}/deliverability — Site deliverability status with DMARC monitor summary GET /api/v1/sites/{id}/domain-health — Site domain health history GET /api/v1/sites/{id}/insights — Site analytics insights GET /api/v1/sites/{id}/abuse-monitor — Site complaint and abuse monitor ### /sms POST /api/v1/sms/send — Send an SMS message POST /api/v1/sms/consent — Set contact SMS consent (opt-in/opt-out) POST /api/v1/sms — Send an SMS message (alias of /sms/send) POST /api/v1/sms/campaigns — Create an SMS campaign GET /api/v1/sms/log — List SMS delivery log rows GET /api/v1/sms/inbound — List inbound SMS replies GET /api/v1/sms/provider — Get default SMS provider status GET /api/v1/sms/cost-preview — Estimate SMS send cost ### /social GET, POST /api/v1/social/campaigns — List social campaigns GET, PATCH /api/v1/social/campaigns/{id} — Get a social campaign with its posts POST /api/v1/social/campaigns/{id}/posts — Add a post to a social campaign ### /social-analytics GET /api/v1/social-analytics/campaigns — Get social campaign analytics GET /api/v1/social-analytics/portfolio — Get aggregate social portfolio analytics GET /api/v1/social-analytics/engagements — List inbound social engagements for worker context ### /social-inbox GET /api/v1/social-inbox — List inbound social engagements ### /social-posts POST /api/v1/social-posts/adapt — Adapt content into social posts GET, POST /api/v1/social-posts — List social posts GET, PATCH, DELETE /api/v1/social-posts/{id} — Get a social post ### /suppressions GET, POST, DELETE /api/v1/suppressions — List suppressions DELETE /api/v1/suppressions/{id} — Remove a suppression by id ### /surveys GET /api/v1/surveys — List surveys available to worker context ### /synchronex GET /api/v1/synchronex/content-opportunity/signals — Export content-opportunity signals for Synchronex POST /api/v1/synchronex/recommendations/approve — Apply a Synchronex CEO-approved campaign recommendation GET /api/v1/synchronex/signals — Replay Synchronex signal webhooks GET /api/v1/synchronex/signals/summary — Summarize recent Synchronex signal activity ### /templates GET /api/v1/templates/{id}/preview — Preview a template with seeded sample content GET, POST /api/v1/templates — List templates GET, PATCH, DELETE /api/v1/templates/{id} — Get a template ### /trigger POST /api/v1/trigger — Trigger automation evaluation for a contact event ### /webhook-subscriptions GET, POST /api/v1/webhook-subscriptions — List registered outbound webhooks (secrets never returned) PATCH, DELETE /api/v1/webhook-subscriptions/{id} — Update an outbound webhook (url, events, active, description) ### /webhooks POST /api/v1/webhooks/cal-com/{connectionId} — Receive a Cal.com webhook for a platform connection POST /api/v1/webhooks/calendly/{connectionId} — Receive a Calendly webhook for a platform connection POST /api/v1/webhooks/hubspot/{connectionId} — Receive a HubSpot webhook for a platform connection POST /api/v1/webhooks/shopify/{connectionId} — Receive a Shopify webhook for a platform connection POST /api/v1/webhooks/stripe/{connectionId} — Receive a Stripe webhook for a platform connection POST /api/v1/webhooks/typeform/{connectionId} — Receive a Typeform webhook for a platform connection --- ## MCP Server (225 tools, 28 groups) Connect over stdio (the @sendinel MCP server) or HTTP. HTTP gateway: - GET /api/mcp/tools — list tools (supports ?q= and ?group=) - GET /api/mcp/tools/{name} — tool schema - POST /api/mcp/tools/{name}/call — execute a tool - GET /api/mcp/openapi.json — OpenAPI for the HTTP gateway - /api/mcp-stream — streamable MCP transport ### ab-testing (4) check_ab_significance, create_ab_test, list_ab_tests, promote_ab_winner ### advisor (6) campaign_advisor, optimize_subject_lines, recovery_plan, run_portfolio_analysis, suggest_content_topics, suggest_send_time ### ai-work (9) dismiss_ai_work_item, get_agent_proposal, get_ai_work_item, list_agent_proposals, list_ai_work_items, list_recommended_segments, mark_ai_work_item_seen, snooze_ai_work_item, submit_ai_context_event ### analytics (16) abuse_monitor_override, abuse_monitor_status, create_social_campaign, deliverability_check, get_domain_health, get_engagement_insights, get_portfolio_analytics, get_portfolio_stats, get_site_insights, get_sites, get_stats, list_event_log, list_projects, list_social_campaigns, performance_report, schedule_social_post ### approvals (2) check_approval, list_pending_approvals ### automations (7) create_escalation_ladder, enroll_automation, enroll_in_escalation_ladder, list_automations, list_escalation_ladder_status, preview_automation, trigger_automation ### brand_kit (4) import_brand_kit_text, ingest_brand_assets_by_url, list_brand_assets, upload_brand_asset ### campaigns (28) add_campaign_step, broadcast_to_segment, check_content_consistency, clone_campaign, create_campaign, create_campaign_with_content, delete_campaign, delete_campaign_step, enroll_contact, enroll_segment, generate_email, get_campaign, get_campaign_calendar, get_enrollment_status, get_schedule, launch_campaign, list_campaign_steps, list_campaigns, preview_campaign_audience, preview_email, review_campaign_portfolio, send_test_email, send_transactional, unenroll_contact, update_campaign, update_campaign_status, update_campaign_step, validate_template ### compound (4) create_template_from_brief, diagnose_delivery_issue, onboard_new_site, setup_campaign_from_brief ### contacts (26) add_subscriber, add_suppression, enrich_subscriber, estimate_segment_size, find_duplicates, get_contact_schema, get_hygiene_config, get_subscriber, get_subscriber_timeline, identify_inactive, import_subscribers, list_companies, list_email_log, list_hygiene_audit, list_subscribers, list_subscribers_by_segment, list_suppressions, list_win_back_draft, merge_subscribers, remove_suppression, run_list_hygiene, set_subscriber_tags, subscriber_export, unsubscribe_subscriber, update_hygiene_config, update_subscriber ### content (11) create_asset_link, create_blog_post, create_content_block, delete_content_block, get_asset_link_views, list_asset_links, list_blog_destinations, list_blog_posts, list_content_blocks, list_content_sources, trigger_content_pipeline ### data (14) configure_platform_trigger, connect_platform, create_api_key, disconnect_platform, list_api_keys, list_connected_platforms, list_import_history, list_notifications, list_platform_events, mark_notifications_read, migrate_campaigns_from, revoke_api_key, start_platform_migration, tenant_export_full ### data-proposals (3) approve_data_proposal, list_data_proposals, propose_campaign_from_data ### delivery-ops (12) dnsbl_check, dnsbl_delisting_draft, explain_contact_score, export_data, get_cron_runs, get_queue_status, get_scoring_rules, get_send_dlq, list_domains, refresh_domain_dns, register_domain, update_scoring_rules ### drafts (6) approve_draft, create_draft, get_draft, list_drafts, promote_draft_to_campaign, reject_draft ### forms (3) create_form, get_form_stats, list_forms ### gdpr (2) delete_subscriber_data, list_deletion_log ### newsletters (12) create_newsletter, create_newsletter_issue, get_newsletter, get_newsletter_stats, list_newsletter_issues, list_newsletter_subscribers, list_newsletters, schedule_newsletter_issue, send_newsletter_issue, subscribe_to_newsletter, unsubscribe_from_newsletter, update_newsletter ### org (10) add_white_label_domain, get_plan_limits, get_plan_usage, get_provider_switch_status, get_white_label_settings, invite_team_member, list_team_members, rollback_provider_switch, set_white_label_settings, start_provider_switch ### segments (6) create_segment, create_segment_nl, delete_segment, list_segments, preview_segment, update_segment ### short-links (3) create_short_link, generate_qr_code, get_short_link_stats ### sites (5) create_sender, create_site, get_brand_voice, update_brand_voice, update_site ### sms (7) get_sms_provider_status, list_sms_inbound, list_sms_log, preview_sms_cost, send_sms, send_sms_campaign, set_contact_sms_consent ### social-posts (6) adapt_social_post, create_social_post, delete_social_post, get_social_post, list_social_posts, update_social_post ### surveys (5) create_survey, get_survey, get_survey_results, list_surveys, update_survey ### templates (6) create_template, delete_template, get_template, list_templates, translate_template, update_template ### warmup (4) get_warmup_status, pause_warmup, resume_warmup, update_warmup_schedule ### webhooks (4) delete_webhook_subscription, list_webhook_subscriptions, subscribe_webhook, update_webhook_subscription --- ## Integrations Email providers (6): resend, sendgrid, ses, postmark, mailgun, elastic-email (Resend is the default). SMS providers (2): telnyx, twilio. Social platforms (10): instagram, linkedin, twitter, facebook, tiktok, youtube, pinterest, threads, reddit, bluesky (via the SocialPublisher abstraction; Upload Post by default). Import sources: Customer.io, Mailchimp, Klaviyo, ActiveCampaign, Kit, Resend. Payment providers (9, 1 live): - stripe (Stripe) — implemented - paddle (Paddle) - lemonsqueezy (Lemon Squeezy) - paypal (PayPal) - braintree (Braintree) - square (Square) - chargebee (Chargebee) - recurly (Recurly) - polar (Polar) --- ## Plans (5) - free: $0/mo · contacts 250 · sends/mo 500 · mcp_access false · agent_access true · ab_testing false - byod: $19/mo · contacts 2147483647 · sends/mo 2147483647 · mcp_access true · agent_access true · ab_testing true - managed: $79/mo · contacts 50000 · sends/mo 50000 · mcp_access true · agent_access true · ab_testing true - agency-plus: $999/mo · contacts -1 · sends/mo 500000 · mcp_access true · agent_access true · ab_testing true - enterprise: $499/mo · contacts -1 · sends/mo 250000 · mcp_access true · agent_access true · ab_testing true --- ## Webhooks (outbound — Sendinel notifies your app) Events: campaign.completed, email.bounced, email.complained, contact.unsubscribed, bounce_rate.warning, domain.dns_lost. Configure at Settings → Developer → Webhooks. --- ## Public schemas (16) OpenAPI components.schemas: Error, AiContextEvent, Site, Contact, SegmentRule, Segment, Template, CampaignStep, Campaign, EventRequest, TriggerRequest, SendRequest, ConversionRequest, SynchronexProvisionRequest, SynchronexProvisionResponse, ServiceProjectLookupResponse. All persistent data lives in the Postgres `email` schema (multi-tenant; every row scoped by user_id and/or org_id, RLS enforced).