Skip to main content

synquic-slide

Official Python SDK for the Slide API

PyPI version Python License: MIT

Slide is a multichannel customer engagement platform. Use this SDK to send WhatsApp messages, trigger emails, place AI voice calls, manage contacts, query Shopify orders, and more.

Supports both sync and async usage. Fully typed with Python type hints.


Installation

pip install synquic-slide

Requires Python 3.9+.


Getting Your API Key

  1. Log in to your Slide dashboard
  2. Go to Settings → API Keys
  3. Click Create API Key
  4. Select the scopes you need (e.g. email:send, whatsapp:send, voice:calls:write)
  5. Copy the key — it starts with sk_live_ and is shown only once
# .env
SLIDE_API_KEY=sk_live_your_key_here

Quick Start

import os
from synquic_slide import SlideClient

slide = SlideClient(api_key=os.environ["SLIDE_API_KEY"])

# Send a WhatsApp template
msg = slide.whatsapp.send_template(
    to="+919876543210",
    template_name="order_shipped",
    language_code="en",
)
print(msg["wamid"])

# Send a transactional email
slide.email.send(
    recipient={"to": "customer@example.com", "firstName": "Priya"},
    template_id="tmpl_order_confirm",
    from_name="Acme Store",
    from_email="orders@acme.com",
    variables={"orderId": "#1042", "total": "₹2,499"},
)

# Initiate an outbound AI voice call
call = slide.voice.initiate_outbound_call(
    agent_id="agent_abc123",
    to_number="+919876543210",
    call_context={"customerName": "Priya", "orderId": "#1042"},
)
print(call["id"], call["status"])

Async Usage

import asyncio
import os
from synquic_slide import AsyncSlideClient

async def main():
    async with AsyncSlideClient(api_key=os.environ["SLIDE_API_KEY"]) as slide:
        contacts = await slide.contacts.list(page=1, limit=50)
        print(contacts["meta"]["total"])

        msg = await slide.whatsapp.send_template(
            to="+919876543210",
            template_name="order_update",
            language_code="en",
        )
        print(msg["wamid"])

asyncio.run(main())

Resources

Contacts

# List contacts
result = slide.contacts.list(page=1, limit=50, search="priya")
result["data"]         # list of contacts
result["meta"]["total"]

Scope: contacts:read


Email

# Send an email
slide.email.send(
    recipient={"to": "user@example.com", "firstName": "Rahul"},
    template_id="tmpl_welcome",
    from_name="Acme",
    from_email="hello@acme.com",
    subject="Welcome!",           # optional override
    reply_to="support@acme.com",  # optional
    variables={"coupon": "SAVE20"},
)

# List templates
templates = slide.email.list_templates()

# Get a template
tmpl = slide.email.get_template("tmpl_welcome")

# List contacts
contacts = slide.email.list_contacts(page=1, search="rahul")

# Create / update a contact
slide.email.upsert_contact(
    email="user@example.com",
    first_name="Rahul",
    phone="+919876543210",
    tags=["vip", "customer"],
    custom_fields={"city": "Mumbai"},
)

Scopes: email:send · email:templates:read · email:contacts:read · email:contacts:write


WhatsApp

# Send a template
sent = slide.whatsapp.send_template(
    to="+919876543210",
    template_name="order_shipped",
    language_code="en",
    components=[
        {
            "type": "body",
            "parameters": [
                {"type": "text", "text": "#1042"},
                {"type": "text", "text": "Delhivery"},
            ],
        }
    ],
)

# Upload header media
with open("banner.jpg", "rb") as f:
    media = slide.whatsapp.upload_header_media(
        file=f.read(),
        filename="banner.jpg",
        mime_type="image/jpeg",
        expected_format="IMAGE",
    )

# Read message logs
logs = slide.whatsapp.list_logs(direction="outbound", status="delivered")

# List templates
templates = slide.whatsapp.list_templates(status="APPROVED", category="UTILITY")

Scopes: whatsapp:send · whatsapp:logs:read · whatsapp:templates:read


Instagram

profile = slide.instagram.get_profile()
convos  = slide.instagram.list_conversations(page=1, limit=20)

slide.instagram.send_message(
    recipient_igsid="123456789",
    message="Thanks for reaching out!",
)

insights = slide.instagram.get_insights(period="day", since="2024-01-01", until="2024-01-31")

Scopes: instagram:messages:read · instagram:messages:send · instagram:insights:read


Shopify

results     = slide.shopify.search_products(q="running shoes", limit=10)
types       = slide.shopify.get_product_types()
product     = slide.shopify.get_product("gid://shopify/Product/123")
collections = slide.shopify.list_collections()
items       = slide.shopify.get_collection_products("col_789", limit=50)
order       = slide.shopify.get_order_status(identifier="#1042")
history     = slide.shopify.get_customer_orders(identifier="+919876543210")
discount    = slide.shopify.validate_discount(code="SAVE20")

Scopes: shopify:products:read · shopify:orders:read · shopify:discounts:read


Voice

agents    = slide.voice.list_agents()
agent     = slide.voice.get_agent("agent_abc123")

call = slide.voice.initiate_outbound_call(
    agent_id="agent_abc123",
    to_number="+919876543210",
    call_context={"customerName": "Priya"},
)

calls     = slide.voice.list_calls(status="COMPLETED", direction="OUTBOUND")
detail    = slide.voice.get_call("call_xyz")
recording = slide.voice.get_call_recording("call_xyz")  # URL valid 1 hour
analytics = slide.voice.get_analytics(from_date="2024-01-01", to_date="2024-01-31")

Scopes: voice:agents:read · voice:calls:read · voice:calls:write


Error Handling

from synquic_slide import (
    SlideError,
    SlideAuthError,
    SlideScopeError,
    SlideNotFoundError,
    SlideValidationError,
)

try:
    slide.email.send(...)
except SlideAuthError:
    print("Invalid API key — check SLIDE_API_KEY")
except SlideScopeError as e:
    print(f"Missing scope: {e}")       # e.g. "email:send"
except SlideValidationError as e:
    print(f"Bad request: {e.body}")
except SlideNotFoundError:
    print("Resource not found")
except SlideError as e:
    print(f"HTTP {e.status_code}: {e}")

Context Manager

# Sync
with SlideClient(api_key="sk_live_...") as slide:
    slide.contacts.list()

# Async
async with AsyncSlideClient(api_key="sk_live_...") as slide:
    await slide.contacts.list()

License

MIT © Synquic

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

synquic_slide-0.1.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synquic_slide-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file synquic_slide-0.1.0.tar.gz.

File metadata

  • Download URL: synquic_slide-0.1.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for synquic_slide-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1f10dbd121b85f0cf1cd28bf9925821227fdbd4b1887e910815477994115b210
MD5 002fe86e9d7846eba5a1abf43c9f4756
BLAKE2b-256 c044c8e59bce090546f8e6c003464ed51207ff5f9af00a3927fe2c9ac6d4a1fa

See more details on using hashes here.

File details

Details for the file synquic_slide-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: synquic_slide-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for synquic_slide-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e939a0a21be75ccd0ae66b60be4b03c2a7b190e0b6541a96a4e3b79fa6d2245b
MD5 dc8feee37535b22a35cb4faf3ebd8c9c
BLAKE2b-256 f045d6b0b53a432d17a54b8881819b58c13832d2d3b24def6efcb649fb3b8682

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page