Developers
The Solstral API
One REST API over every object you have, including the ones you invented, plus events, tickets, text messages, transactional email and knowledge. Described in OpenAPI 3.1, so your tools can read it.
The essentials
- Authenticate with an API key from Settings ▸ API & webhooks: Authorization: Bearer sk_live_…
- The full description: https://app.solstral.com/api/v1/openapi.json (version 2026-10-14)
- Every POST accepts an Idempotency-Key: a retried request runs once and returns the first result's id
- 60 to 1,200 requests a minute per key, by plan; every answer carries RateLimit-Limit, -Remaining and -Reset
- Lists page with a cursor: pass limit, then the nextCursor you were given
- Errors share one shape: a sentence for a person and a code for your program
- Versions are dates (X-API-Version). A version is answered for at least 12 months after its successor ships, and a Sunset header warns before one retires
- Keys can be limited to a role, a member and a list of IP addresses
Actions: the same catalogue as the AI connector
- POST /api/v1/actions/<name> runs any action below with its own JSON input; the OpenAPI spec describes each one
- The same names, inputs and error codes an AI connection uses over MCP, from one catalogue
- actions.describe: Describe an action
- actions.search: Find an action
- activities.complete: Complete a task (write)
- activities.create: Log a note or task (write)
- activities.delete: Delete an activity (destructive)
- activities.update: Edit a note or task (write)
- agenda.assign: Assign agendas to a chat bot (write)
- agenda.create: Create a chat agenda (write)
- agenda.list: List chat agendas
- agenda.publish: Publish a chat agenda (write)
- agenda.simulate: Test a chat agenda
- ai_fields.explain: Explain an AI field's value
- ai_fields.fill: Fill an AI field's column (bulk)
- analytics.overview: Website traffic
- approvals.decide: Approve or turn down a change (structural)
- approvals.list: List change requests
- approvals.request: Ask an admin to approve a change (write)
- ask_user: Ask the user
- attachments.list: List a record's attachments
- audit.search: Search the audit trail
- automations.activate: Activate or pause an automation (destructive)
- automations.create: Build an automation (draft) (write)
- automations.get: Get an automation
- automations.list: List automations
- automations.runs: Did my automation run?
- automations.update: Update an automation draft (write)
- automations.webhook_samples: Read a webhook flow's test data
- billing.usage: AI credits and plan usage
- calls.history: A record's calls
- campaigns.create: Create a campaign (draft) (write)
- campaigns.edit_text: Edit campaign copy (write)
- campaigns.list: List campaigns
- campaigns.read_content: Read a campaign's copy
- campaigns.report: Campaign performance report
- campaigns.schedule: Schedule a campaign (send)
- campaigns.set_html: Set a campaign's email as HTML (write)
- campaigns.update: Change a campaign (write)
- capture.decide: Act on what capture found (bulk)
- capture.list: What capture found
- chatbot.configure: Create or update a chat bot (write)
- chatbot.leads: List a widget's leads
- chatflow.generate: Generate a conversation flow (write)
- consent.history: Consent history
- contact_policy.check: Would the contact policy hold an email to them?
- contact_policy.get: Contact policy
- contacts.enrich: Look up contact data (write)
- contacts.find_people: Find people with Apollo (write)
- conversations.decide: Accept or undo a conversation's changes (write)
- dashboards.create: Create a dashboard (write)
- dashboards.list: List dashboards
- dashboards.update: Change a dashboard (write)
- data_export.status: Daily export status
- deals.summary: What's happening on a deal
- deliverability.dmarc: DMARC reports and whether it's safe to enforce
- deliverability.dormant: Contacts who have stopped engaging
- deliverability.placement: Where a campaign landed — inbox or spam
- deliverability.report: Deliverability by domain
- deliverability.reputation: What Gmail thinks of a sending domain
- describe_app: Describe the app
- describe_capabilities: What you can do
- describe_object: Describe an object
- duplicates.find: Find duplicate records
- email.compose: Draft an email
- email.diagnose: Why can't I send email?
- email.domain.add: Register a domain (write)
- email.domain.check: Check a domain's DNS (write)
- email.domains.list: List email domains
- email.draft_reply: Draft a reply to an email
- email.draft_update: Write or change the email draft (write)
- email.log: Log an email on a record (write)
- email.schedule: Schedule an email for later (send)
- email.scheduled.cancel: Cancel a scheduled email (write)
- email.scheduled.list: List scheduled emails
- email.send: Send an email (send)
- email.senders.list: List the addresses I can send from
- email.sending.check: Check sending (DKIM) for a domain (write)
- email.sending.enable: Turn on email sending for a domain (write)
- email.suppression.check: Why isn't my email reaching them?
- email.unsubscribe: Stop emailing an address (destructive)
- email.verification.check: Is this email address verified?
- email.verification.send: Ask someone to verify their email (send)
- enrich.clear_cache: Forget cached website lookups (write)
- enrich.company: Look up a company from its website
- events.describe: Describe events
- events.list: What happened since
- events.timeline: What a record did
- events.track: Track an event (write)
- events.undo: Undo changes from the activity history (bulk)
- explain: Why did this happen?
- faq.create: Add a curated FAQ (write)
- faq.mine_from_conversations: Suggest FAQs from past chats
- files.attach_to_record: File an upload on a record (write)
- files.list: Files on a record
- find_settings: Find a setting
- forecast.get: Get the sales forecast
- forecast.submit: Submit my forecast call (write)
- forms.check: Check a form works end to end
- forms.create: Build a form (write)
- forms.list: List forms
- forms.publish: Publish or unpublish a form (destructive)
- forms.submissions: Read form submissions
- forms.update: Rename or rebuild a form (write)
- generate_workspace: Generate a workspace (bulk)
- goals.create: Set a target (write)
- goals.list: List targets and progress
- goals.plan_program: Plan a program for a goal (write)
- goals.suggest: Turn a goal into a target
- groups.add_member: Add or remove someone from a team (destructive)
- groups.create: Create a team (write)
- groups.list: List teams
- groups.set_access: Set what a team can access (destructive)
- import.clean_preview: Preview cleaned import data
- import.inspect: Inspect a CSV before importing
- inbox.bulk: Change many conversations at once (bulk)
- inbox.get: Read a conversation
- inbox.list: List inbox conversations
- inbox.note: Add an internal note (write)
- inbox.reply: Reply to a conversation (send)
- inbox.update: Change a conversation (write)
- integrations.status: Check connected accounts
- knowledge.create: Add a knowledge article (write)
- knowledge.ingest_notion: Sync a Notion database into the knowledge base (write)
- knowledge.ingest_website: Ingest a website into the knowledge base (write)
- knowledge.search: Search the knowledge base
- lists.add_members: Add contacts to a list (write)
- lists.create: Create an audience (write)
- lists.list: List audiences
- lists.members: Who's on a list
- lists.remove_members: Remove contacts from a list (destructive)
- lists.set_live: Keep a segment live (write)
- mailboxes.list: List mailboxes
- media.list: Search the media library
- meetings.advanced: Advanced availability (write)
- meetings.availability: Check availability
- meetings.book: Book a meeting (send)
- meetings.brief: Brief me on a meeting
- meetings.cancel: Cancel a meeting (send)
- meetings.duplicate_page: Duplicate a booking page (write)
- meetings.list: List meetings
- meetings.notes: Notes from recorded meetings
- meetings.pages: List booking pages
- meetings.reschedule: Reschedule a meeting (send)
- meetings.send_link: Send a booking link (send)
- meetings.single_use_link: Create a single-use link (write)
- meetings.stats: Meeting analytics
- members.invite: Invite someone to the workspace (send)
- members.list: List workspace members
- members.remove: Remove someone from the workspace (destructive)
- members.set_role: Change someone's role or access (destructive)
- memory.forget: Forget something (write)
- memory.list: What do you remember?
- memory.remember: Remember something (write)
- notifications.list: What have I missed?
- operations.get: Check on long work
- outreach.timing: Is it too early to contact them?
- profile.get: Read my profile
- profile.update: Update my profile (write)
- records.archive: Archive or restore a record (destructive)
- records.bulk_archive: Bulk archive/restore records (bulk)
- records.bulk_update: Change every record in a selection (bulk)
- records.context: Get a record with its context
- records.create: Create a record (write)
- records.find_by_email: Find records by email address
- records.get: Get a record
- records.link: Link two records (write)
- records.list: List records
- records.merge: Merge records (destructive)
- records.query: Query & shortlist records
- records.search: Search records
- records.select: Find the records to act on
- records.trash: What's in the trash
- records.undo: Undo a bulk change (bulk)
- records.unlink: Unlink two records (write)
- records.update: Update a record (write)
- rehearse: Rehearse before going live
- reporting.list_sources: List reporting sources
- reporting.run: Run a report
- reporting.templates: List report templates
- reporting.why_changed: Why did this change?
- reports.create: Create a saved report (write)
- reports.list: List saved reports
- reports.update: Change a saved report (write)
- schema.add_field: Add a field to an object (structural)
- schema.create_object: Create a custom object (bulk)
- schema.update_field: Rename a field or change its options (structural)
- scores.explain: Explain a lead score
- sections.list: List saved email sections
- sections.read: Read a saved email section
- sequences.enroll: Enrol people in a sequence (send)
- sequences.list: List sequences
- signatures.get: Read the email signatures
- signatures.set: Set an email signature (write)
- sites.blog.add: Add a blog to a website (structural)
- sites.blog.post: Write a blog post (write)
- sites.class.rename: Rename a class on a website (write)
- sites.classes.list: List a website's classes
- sites.collection.bind: Let a website show a collection (write)
- sites.import.start: Import an existing website into a site (write)
- sites.import.status: How a website import is going
- sites.list: List websites and pages
- sites.page.create_from_sections: Make a website page from ready-made sections (write)
- sites.page.edit_text: Change a piece of page copy (destructive)
- sites.page.read: Read a page's copy and SEO
- sites.publish: Publish a website (destructive)
- sites.seo.audit: Audit a site's SEO
- sites.seo.set: Set a page's SEO (write)
- sites.seo.suggest: Draft SEO for a page
- sites.variables.set: Set a website variable (write)
- skills.list: List saved skills
- skills.save: Save a skill (write)
- skills.use: Run a saved skill
- sms.campaigns.create: Draft a text campaign (write)
- sms.campaigns.list: List text campaigns
- sms.campaigns.schedule: Send or schedule a text campaign (send)
- sms.send: Send a text (send)
- sms.thread: Read a record's texts
- snippets.create: Save a reply as a snippet (write)
- snippets.list: List saved replies
- snippets.update: Change a saved reply (write)
- social.accounts.list: List social accounts
- social.post.create: Create a social post (write)
- social.post.draft: Draft social post copy
- social.post.schedule: Schedule or publish a social post (send)
- social.posts.list: List social posts
- social.queues.list: List posting queues
- social.replies.decide: Approve or discard an AI reply (send)
- social.replies.pending: List AI replies awaiting approval
- social.rules.create: Draft a comment automation (write)
- social.rules.list: List comment automations
- social.rules.set_status: Pause or resume a comment automation (write)
- social.targets.list: List engage targets
- support.report_issue: Report a bug or request a feature
- templates.create: Create an email template (write)
- templates.edit_text: Edit template copy (write)
- templates.list: List email templates
- templates.read: Read a template's copy
- templates.update: Change a template's settings (write)
- tickets.assign: Assign a ticket (write)
- tickets.create: Raise a ticket (write)
- tickets.get: Get one ticket
- tickets.list: List support tickets
- tickets.note: Add an internal note to a ticket (write)
- tickets.reply: Reply to the requester on a ticket (send)
- tickets.sla_policy: Ticket SLA targets
- tickets.stats: Helpdesk numbers
- tickets.update: Change a ticket (write)
- transactional.send: Send a transactional email (send)
- transactional.stats: Transactional email stats
- views.create: Create a saved view (write)
- views.delete: Delete a saved view (destructive)
- views.list: List saved views
- views.update: Change a saved view (write)
- webhooks.create: Create a webhook endpoint (send)
- webhooks.delete: Delete a webhook endpoint (destructive)
- webhooks.list: List webhook endpoints
- whats_next.decide: Snooze or dismiss a suggestion (write)
- whats_next.do: Act on a suggestion (write)
- whats_next.list: What should I do next?
- whats_next.records: The records behind a suggestion
- whats_next.set_aside: Not needed (one record) (write)
- workspace.modules.list: What's in the sidebar
- workspace.modules.set: Show or hide a module in the sidebar (structural)
- workspace.settings.get: Read workspace settings
- workspace.settings.set: Change workspace settings (destructive)
Records
- GET /api/v1/objects: List the workspace's objects and their fields
- GET /api/v1/objects/{slug}: List an object's records
- POST /api/v1/objects/{slug}: Create a record (idempotent)
- GET /api/v1/objects/{slug}/{id}: Get a record
- PATCH /api/v1/objects/{slug}/{id}: Update a record's fields
- POST /api/v1/enrichment: Send contact data back for a record (Clay's HTTP API column, or any tool): kept as values to review, never written over a value (idempotent)
Events
- POST /api/v1/events: Send track and identify events (Segment-compatible) (idempotent)
Tickets
- GET /api/v1/tickets: List tickets
- POST /api/v1/tickets: Create a ticket (idempotent)
- GET /api/v1/tickets/{id}: Get a ticket
- PATCH /api/v1/tickets/{id}: Change a ticket's status, priority or assignee
Text messages
- POST /api/v1/sms: Send or schedule a text message (idempotent)
- GET /api/v1/sms: List text messages
- GET /api/v1/sms/{id}: Get a text message
- POST /api/v1/transactional/emails: Send one transactional email (idempotent)
Knowledge
- GET /api/v1/knowledge: List published knowledge articles, or search them with `q`
- POST /api/v1/knowledge: Create or update (by externalId) a knowledge article (idempotent)
- POST /api/v1/knowledge/ingest: Crawl a website or sync Notion into knowledge (admin keys) (idempotent)
Actions
- POST /api/v1/actions/{name}: Run an action from the catalogue by name (each one is also listed below with its own body) (idempotent)
Webhooks
- POST /api/v1/hooks: Subscribe a URL to platform events (REST hooks for Zapier, Make, n8n; admin keys) (idempotent)
- DELETE /api/v1/hooks/{id}: Unsubscribe a REST hook
Building an integration?
Ask the team that builds the API: a person reads every message.