Skip to main content

Documentation Index

Fetch the complete documentation index at: https://lava.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Workspace messaging API for sending messages, reading channel history, and managing channels. Use GET with query params for read endpoints (conversations.list, conversations.history, users.list, users.lookupByEmail) — POST with a JSON body silently drops filter params on some reads. Use POST with JSON body for writes (chat.postMessage, conversations.open). External Slack Connect users are NOT in users.list — resolve them via conversations.list + conversations.history user_profile blocks. search.messages requires the umbrella search:read scope (granular variants do not satisfy it). 6 example endpoints available through Lava’s AI Gateway. See the Slack API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://slack.com is supported. 200+ Slack Web API methods. Construct URL as https://slack.com/api/{method_name}. See https://api.slack.com/methods for full reference. The endpoints below are curated examples.

Endpoints

Send a message to a channel

POST https://slack.com/api/chat.postMessage — Free
const data = await lava.gateway('https://slack.com/api/chat.postMessage', { body: {"channel":"C01234567","text":"Hello from Lava!"} });

Get channel message history. GET with query params — passing filters in a JSON POST body is silently ignored by Slack for some read endpoints.

GET https://slack.com/api/conversations.history?channel=C01234567&limit=10 — Free
const data = await lava.gateway('https://slack.com/api/conversations.history?channel=C01234567&limit=10', { method: 'GET' });

List channels in workspace. GET with query params — POST with types in a JSON body is silently dropped and returns public channels regardless of the filter. Use types=im,mpim for DMs and group DMs, public_channel for public channels, private_channel for private.

GET https://slack.com/api/conversations.list?types=public_channel&limit=100 — Free
const data = await lava.gateway('https://slack.com/api/conversations.list?types=public_channel&limit=100', { method: 'GET' });

Open or resume a DM channel with a user. Required before chat.postMessage for DMs — pass the returned channel ID to chat.postMessage. Works even if the DM is already open (already_open: true is normal).

POST https://slack.com/api/conversations.open — Free
const data = await lava.gateway('https://slack.com/api/conversations.open', { body: {"users":"U01234567"} });

List users in the workspace. Internal members only — external Slack Connect users do NOT appear here. Resolve external users via conversations.list + conversations.history user_profile blocks.

GET https://slack.com/api/users.list — Free
const data = await lava.gateway('https://slack.com/api/users.list', { method: 'GET' });

Find a user by email. Confirm the exact email domain with the caller before using — corporate TLDs are often non-standard (e.g. .capital, .vc). GET with email as a query param.

GET https://slack.com/api/users.lookupByEmail?email=user@example.com — Free
const data = await lava.gateway('https://slack.com/api/users.lookupByEmail?email=user@example.com', { method: 'GET' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests