llms.txt
Viktor - AI Employee for Slack and Microsoft Teams
Viktor is an autonomous AI employee that lives in Slack or Microsoft Teams, connects to 3,200+ tools, and does real work: analytics, automation, reports, code, and web apps.
Raw markdown for any blog post is available at: https://viktor.com/blog/
/md Raw markdown for any research post is available at: https://viktor.com/research/ /md
Pages
- Home: Product overview, features, use cases, FAQ (~3K tokens)
- Pricing: Plans, features by tier, free trial (~900 tokens)
- Security: SOC 2, GDPR, CCPA, encryption, compliance (~1K tokens)
- Enterprise: Enterprise features, SSO, dedicated support (~1.7K tokens)
- Agencies: Client reporting, campaign audits, decks, creative briefs, and internal tools from Slack or Microsoft Teams
- Legal: Docket checks, intake audits, case briefs, and proposed file updates for attorney review
- Viktor vs Lindy Teammate: Flat workspace vs per-seat pricing, Slack and Microsoft Teams coverage, credit rules, and honest tradeoffs
- Viktor vs Grok Bot: Shared Slack and Microsoft Teams work vs Bots in xAI's app, with autonomy, credentials, pricing, and honest tradeoffs
- Viktor vs Superhuman Go: Per-user assistant vs team AI employee, inbox drafts vs finished jobs, dated Go pricing, and whether both can be used together (~2.6K tokens)
- Changelog: Product updates and new features (~2.1K tokens)
- Blog: Guides, comparisons, and use cases
- Research: Engineering and research deep-dives from the team building Viktor
Docs
Getting Started with Viktor
URL: https://viktor.com/docs/getting-started Summary: Add Viktor to your Slack or Microsoft Teams workspace and start automating tasks in minutes.
Viktor is an AI coworker that lives in your Slack or Microsoft Teams workspace. It connects to 3,200+ business tools and does real work — pulling reports, managing campaigns, writing code, and automating workflows.
Add Viktor to Slack or Microsoft Teams
- Go to app.viktor.com/signup and create your account.
- Click We use Slack or We use Teams and authorize Viktor for your workspace.
- Viktor will appear as a member of your workspace — you can message it directly or invite it to channels.
Connect your tools
Viktor works best when it can access the tools your team uses. Head to the Viktor dashboard and connect integrations like:
- CRM — HubSpot, Salesforce
- Analytics — PostHog, Google Analytics
- Ads — Google Ads, Meta Ads
- Engineering — GitHub, Linear
- Productivity — Notion, Google Calendar, Slack
Each integration authenticates via OAuth — one click per tool, no API keys to paste.
Start working
Message Viktor the way you would message a coworker:
- "Pull last week's revenue from Stripe and compare it to the week before."
- "Create a GitHub issue for the login bug we discussed in #engineering."
- "Run a competitive analysis on our top 3 competitors."
Viktor figures out which tools to use, pulls the data, and delivers the result right in your conversation.
What's next
- Set up scheduled tasks so Viktor runs recurring workflows automatically.
- Explore proactive automations — Viktor observes your team's patterns and suggests helpful routines.
- Invite your team — everyone in the workspace can use Viktor, no technical expertise required.
Connect Your Tools
URL: https://viktor.com/docs/connect-your-tools Summary: Link the apps your team uses so Viktor can do real work in them — one secure OAuth sign-in per tool.
Viktor does his best work when he can reach the tools your team already uses. Every integration connects through the tool's own secure sign-in — no API keys to paste, and you can revoke access at any time.
Connect an app
- Open the Integrations screen and find the app you want.
- Select Connect. A secure sign-in window opens for that app.
- Sign in and approve the access Viktor requests.
Once connected, the app shows as active on the Integrations screen and Viktor can use it in conversations, scheduled tasks, and API runs.
What to connect first
Start with the tools where your work actually lives:
- CRM — HubSpot, Salesforce
- Analytics — PostHog, Google Analytics
- Ads — Google Ads, Meta Ads
- Engineering — GitHub, Linear
- Productivity — Notion, Google Calendar, Gmail
With 3,200+ integrations available, most of your stack is already covered. Browse the full catalog on the integrations page.
Tool not in the catalog?
Viktor can also connect to custom MCP servers and APIs, and can build the missing integration from a tool's API documentation. See request a new integration for how to get one added.
Managing access
- Review or disconnect any integration from the Integrations screen.
- Viktor only receives the access each app grants during sign-in.
- If a connection stops working, see reconnect an integration.
Scheduled Tasks
URL: https://viktor.com/docs/scheduled-tasks Summary: Have Viktor run recurring work automatically — daily briefs, weekly reports, monthly reconciliations.
Anything Viktor can do once, he can do on a schedule: a metrics brief every weekday morning, a pipeline report every Monday, an invoice reconciliation on the first of the month.
Set up a schedule
- Describe the task to Viktor in Slack or Teams and ask him to run it on a schedule.
- Be specific about timing — for example, "every weekday at 9 AM, post yesterday's revenue summary in #finance."
- Confirm the schedule when Viktor plays it back, and he saves it as a recurring task.
There is no separate builder to learn. The schedule is part of the conversation, and you can change it the same way: "move the daily brief to 8 AM" or "pause the weekly report until next month."
Ideas to start with
- "Every Monday at 9 AM, summarize last week's support tickets and flag anything unresolved."
- "On the 1st of each month, pull ad spend from Meta and Google and compare it to budget."
- "Every weekday at 5 PM, list the pull requests that are still waiting for review."
Manage scheduled tasks
- Open the Usage section to see your scheduled tasks and the credits they use.
- Pause or remove tasks you no longer need.
- Adjust the timing whenever your routine changes.
Recurring tasks consume credits on each run, so review them occasionally to keep usage efficient. See how credits work for details.
Viktor Public API
URL: https://viktor.com/docs/public-api Summary: Create Viktor threads, run tasks, continue conversations, and download result files from your own applications.
Use the Viktor Public API to give Viktor work from your own applications and automations. The API is asynchronous: create a thread with a message, track the resulting run, then fetch the final result.
- Base URL: all endpoints live under
https://api.viktor.com/api/public/v1. - Credits: API runs consume workspace credits like any other Viktor task. See how credits work and pricing.
- MCP: Prefer the Viktor MCP server when your caller is an MCP-compatible agent.
- OpenAI or Anthropic SDKs: Use the compatible chat API to drive Viktor with existing SDK code.
Quickstart
1. Create an API key
Open Settings → API Keys, select Generate Key, and grant only the scopes your integration needs. Personal keys act as you. Team keys are for shared automations and can be created by team admins.
The secret is shown once. Store it in a secret manager and never put it in source control or client-side code. Keys begin with zt_live_sk_.
2. Check the key
Send the key as a Bearer token. The x-api-key header is also supported.
export VIKTOR_API_KEY="zt_live_sk_..."
curl "https://api.viktor.com/api/public/v1/me" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
GET /api/public/v1/me returns the key type, granted scopes, the workspace's rate-limit tier, and the active rate-limit policies scaled to that tier. It requires no scope, so it is the best first request after creating or rotating a key.
3. Give Viktor a task
Creating a thread also queues its first agent run. Use an idempotency key so a retry cannot start the same task twice.
curl -X POST "https://api.viktor.com/api/public/v1/threads" \
-H "Authorization: Bearer $VIKTOR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: monthly-revenue-2026-07" \
-d '{
"message": "Analyze this month'\''s revenue and summarize the biggest changes.",
"speed": "smarter"
}'
The API returns 202 Accepted with thread.id, message.id, and run.id. Save the run ID.
speed selects the agent configuration: smarter (the default) maximizes quality, while faster trades some depth for lower latency on simple tasks.
4. Wait for the result
Poll the run until its status is terminal: completed, requires_action, failed, cancelled, or timed_out.
requires_action means Viktor finished the run by asking you for something — missing input, a decision, or an approval. The result is available like a completed run: read it, then answer by sending a follow-up message on the same thread.
curl "https://api.viktor.com/api/public/v1/runs/<run_id>" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
When result.available is true, fetch the final result:
curl "https://api.viktor.com/api/public/v1/runs/<run_id>/result" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
Results can contain Markdown, structured JSON, and file artifacts. To continue the same conversation, send another message to the existing thread.
curl -X POST "https://api.viktor.com/api/public/v1/threads/<thread_id>/messages" \
-H "Authorization: Bearer $VIKTOR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: monthly-revenue-follow-up-1" \
-d '{"message":"Turn the analysis into a one-page executive brief."}'
Endpoint reference
| Method | Endpoint | Purpose | Required scopes |
|---|---|---|---|
GET |
/api/public/v1/me |
Identify the key and inspect scopes and rate limits | None |
GET |
/api/public/v1/test |
Lightweight authentication check | None |
POST |
/api/public/v1/threads |
Create a thread and start a run | threads:create, runs:create |
GET |
/api/public/v1/threads |
List threads | threads:read |
GET |
/api/public/v1/threads/{thread_id} |
Get a thread | threads:read |
POST |
/api/public/v1/threads/{thread_id}/messages |
Continue a thread and start a run | messages:create, runs:create |
GET |
/api/public/v1/threads/{thread_id}/messages |
List user-visible messages | messages:read |
GET |
/api/public/v1/threads/{thread_id}/runs |
List runs in a thread | runs:read |
GET |
/api/public/v1/runs/{run_id} |
Get run status | runs:read |
GET |
/api/public/v1/runs/{run_id}/result |
Get a terminal run result | runs:read |
POST |
/api/public/v1/runs/{run_id}/cancel |
Cancel an in-flight run | runs:create |
POST |
/api/public/v1/scripts/runs |
Run a Python script directly in the workspace sandbox | scripts:execute |
GET |
/api/public/v1/scripts/runs/{script_run_id} |
Get a script run's status and result | scripts:execute |
POST |
/api/public/v1/scripts/runs/{script_run_id}/cancel |
Cancel a queued script run | scripts:execute |
GET |
/api/public/v1/integrations |
List connected integrations and their SDK modules | integrations:read |
GET |
/api/public/v1/integrations/{sdk_module}/tools |
List an integration's SDK tools with schemas and snippets | integrations:read |
GET |
/api/public/v1/files/{file_token}/download-url |
Get a short-lived artifact download URL | files:read |
GET |
/api/public/v1/credits |
Get the workspace credit balance and runout forecast | usage:read |
GET |
/api/public/v1/usage/summary |
Get windowed credit usage totals by spend bucket | usage:read |
GET |
/api/public/v1/usage/daily |
Get per-day credit usage for a window | usage:read |
GET |
/api/public/v1/audit/events |
Pull workspace audit events, cursor-paginated (team keys only) | audit:read |
The full interactive reference — every parameter, schema, response body, and a downloadable spec for generated clients — lives in the dashboard under Settings → API Docs.
Scopes
threads:create— create new API threads.threads:read— read and list API threads.messages:create— create messages in API threads.messages:read— read messages in API threads.runs:create— trigger and cancel agent runs.runs:read— read and list run status and results.scripts:execute— run Python scripts directly in the workspace sandbox, poll them, and cancel queued script runs.integrations:read— list connected integrations and read their SDK tools, parameter schemas, and usage snippets.files:read— read file metadata and download result artifacts.chat:completions— use the OpenAI- and Anthropic-compatible chat API.usage:read— read workspace-wide credit usage and the credit balance.audit:read— pull workspace audit events. Team keys only; the audit log must be enabled in workspace settings, and the scope is unavailable on HIPAA deployments.
A key with no scopes can only call /me and /test. Scope changes take effect on new requests immediately.
Script runs
Sometimes your own code is the orchestrator and you do not want an agent. Script runs execute one Python script directly in your workspace sandbox. Your script keeps full control of the logic, and Viktor supplies the sandbox, the connected integrations, and the file plumbing.
The script runs as the key owner's identity. It sees the same workspace files the same person sees in chat, and its integration calls pass the same permission checks.
Discover what a script can call
List the connected integrations your key can use and the SDK module each one is imported from:
curl "https://api.viktor.com/api/public/v1/integrations" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
{
"integrations": [
{ "sdk_module": "mcp_linear", "name": "Linear", "kind": "mcp", "account_label": null, "tool_count": 12 },
{ "sdk_module": "pd_gmail", "name": "Gmail", "kind": "pipedream", "account_label": "ops@example.com", "tool_count": 31 }
]
}
Then list one integration's tools. Every tool comes back exactly as the sandbox SDK exposes it: the function name, the parameters with types and required flags, whether a call needs human approval, and a runnable snippet you can submit to POST /scripts/runs as-is:
curl "https://api.viktor.com/api/public/v1/integrations/mcp_linear/tools" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
{
"name": "linear_create_issue",
"sdk_module": "mcp_linear",
"description": "Create a Linear issue.",
"requires_approval": false,
"parameters": [
{ "name": "title", "type": "str", "required": true, "description": "Issue title", "default": null }
],
"snippet": "import asyncio\n\nfrom sdk.tools.mcp_linear import linear_create_issue\n\n\nasync def main() -> None:\n result = await linear_create_issue(\n title=..., # str\n )\n print(result)\n\n\nasyncio.run(main())\n"
}
The discovery set matches execution: a personal key sees the connections its owner can use in chat, and a team key without a chat identity does not see access-restricted connections. Built-in modules (default_tools, utils_tools, ...) vary per workspace; a script can list /work/sdk/tools/ to discover them in place.
Start a run
Start a run with the script source inline. Short scripts can return their result in one round trip with wait_seconds:
curl -X POST "https://api.viktor.com/api/public/v1/scripts/runs" \
-H "Authorization: Bearer $VIKTOR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: sync-crm-2026-08-28" \
-d '{
"code": "print(\"hello from the sandbox\")",
"timeout_seconds": 120,
"wait_seconds": 30
}'
The response is the run object. While the run is queued or in_progress, poll it:
curl "https://api.viktor.com/api/public/v1/scripts/runs/<script_run_id>" \
-H "Authorization: Bearer $VIKTOR_API_KEY"
A terminal run carries the result: the exit code, captured stdout and stderr, and artifacts for output files. Statuses are queued, in_progress, completed, failed, cancelled, and timed_out.
Rules and limits:
- Output files: write them to the directory in the
VIKTOR_OUTPUT_DIRenvironment variable. Each file comes back as an artifact token for the files endpoint (files:readscope). At most 20 files per run, each at most 50 MB. - Output text:
stdoutandstderrkeep the last 64,000 and 16,000 characters. Write large outputs to the output directory instead. - Timeout:
timeout_seconds(1–600, default 300) bounds the script's runtime. A script over the limit is stopped and the run becomestimed_out. - Waiting:
wait_seconds(0–120) holds the response until the run is terminal or the wait ends. Longer scripts are polled like agent runs. - Cancellation: only a
queuedrun can be cancelled. A script that already executes runs to its end or to its timeout. - Arguments: pass argv values in
args(at most 16, each at most 2,000 characters). Read them fromsys.argvin the script. - Concurrency: at most 4 active script runs per key and 8 per workspace.
- Retries: use
Idempotency-Key. A retried create returns the accepted run instead of executing the script twice.
Workspace usage and credits
The usage endpoints report workspace-wide spend in credits — the same numbers, buckets, and cron attribution as the dashboard's Usage page. Because that data covers the whole workspace, visibility follows the dashboard's admin rule: team keys with usage:read qualify as-is (only workspace admins can create them or edit their scopes), while a personal key also requires its owner to currently be a workspace admin — otherwise requests fail with 403 admin_role_required.
Windows are selected with either a named period (today, last_7_days, last_30_days, this_month, last_month, current_billing_period — the default — or previous_billing_period) or an explicit start_time/end_time pair of at most 366 days. Days are bucketed in UTC unless you pass an IANA timezone.
GET /credits needs no window: it returns the current balance across all credit pools, the billing period, and a burn-rate runout forecast — useful to check before dispatching a batch of runs instead of discovering an empty balance through 402 errors.
Structured output
Set response_format to a JSON Schema when your application needs a predictable object instead of Markdown. Viktor returns the validated value in the result's json field. The complete response_format schema is in the API reference.
Pagination
Thread and run lists use keyset pagination. Pass the last item's ID as starting_after. Message lists use after.
Files
Run results return file artifacts as tokens, not permanent public URLs. Exchange an artifact's id at /api/public/v1/files/{file_token}/download-url. The returned URL is served from Viktor's API domain, requires no further authentication, and is valid for about 15 minutes.
Rate limits and retries
Limits apply per route and per key owner: all personal keys of the same user share one quota, and all team keys of the same team share one quota, so creating additional keys does not increase throughput.
Limits scale with your workspace plan. Every workspace resolves to a rate-limit tier — free, entry, mid, high, or enterprise — and higher tiers get proportionally higher limits on every route. Read your tier and the exact values that apply to your keys from GET /api/public/v1/me (rate_limit_tier and limits); a plan change takes effect within a few minutes. Upgrading your plan is the supported way to raise your limits.
A 429 response includes Retry-After and X-RateLimit-* headers, plus a plan_tier field in the error detail. Wait for the advertised interval before retrying.
Use Idempotency-Key on requests that start runs. Reusing the same key and request returns the originally accepted operation instead of spending credits on a duplicate.
Errors
Errors use one JSON envelope:
{
"detail": {
"error": "machine_readable_code",
"message": "Human-readable explanation"
}
}
Some errors add fields such as scope or retry_after_seconds. Treat the machine-readable error value as stable application logic and the message as display text.
Viktor MCP Server
URL: https://viktor.com/docs/mcp-server Summary: Connect an MCP-compatible agent to Viktor with streamable HTTP and a scoped Viktor API key.
The Viktor MCP server lets any MCP-compatible agent delegate work to Viktor. It exposes the same threads, runs, results, and files as the Viktor Public API, with two agent-friendly tools that can start a task and wait for its result in one call.
- Server URL:
https://api.viktor.com/mcp - Transport: Streamable HTTP
- Authentication: Viktor API key on every request
- Session model: Stateless
Connect
1. Create a scoped API key
Open Settings → API Keys and generate a personal or team key. For the simplest ask_viktor workflow, grant:
threads:createruns:createruns:read
Add other scopes only when the MCP client needs the corresponding tools. The server advertises only tools allowed by the key's current scopes.
2. Add the remote server to your MCP client
Every client needs the same two pieces of information: the server URL and an authentication header. Either header style works:
Authorization: Bearer <VIKTOR_API_KEY>x-api-key: <VIKTOR_API_KEY>
Claude Code
claude mcp add --transport http viktor https://api.viktor.com/mcp \
--header "Authorization: Bearer $VIKTOR_API_KEY"
Cursor
Add the server to ~/.cursor/mcp.json (or the project's .cursor/mcp.json):
{
"mcpServers": {
"viktor": {
"url": "https://api.viktor.com/mcp",
"headers": {
"Authorization": "Bearer <VIKTOR_API_KEY>"
}
}
}
}
Other clients
Most MCP clients accept the same mcpServers JSON shape as the Cursor example, or offer a settings screen where you enter the URL and header. If your client asks for a transport, choose Streamable HTTP, not the legacy SSE transport.
Use your client's secret or environment-variable support instead of saving a live key directly in a shared configuration file.
3. Verify the connection
Call whoami. It requires no scope and returns the key type, granted scopes, the workspace's rate-limit tier, and the active (tier-scaled) rate limits. If other tools are missing, update the key's scopes in the Viktor dashboard and refresh the client's tool list.
Recommended workflow
For a one-off task, call ask_viktor with a message:
{
"message": "Analyze this month's revenue and summarize the biggest changes.",
"speed": "smarter",
"timeout_seconds": 120,
"idempotency_key": "monthly-revenue-2026-07"
}
ask_viktor creates a thread, starts a run, waits up to timeout_seconds, and returns the result when it is ready. Results can contain Markdown, structured JSON, and file artifacts.
If the wait ends first, the response includes wait_timed_out: true and the run_id. Call wait_for_run with that ID. Do not call ask_viktor again, because that can start duplicate work unless the same idempotency key is reused.
For long-running or interactive workflows:
- Call
create_threadto queue work without waiting. - Call
wait_for_runorget_runwith the returned run ID. - Call
send_messageon the same thread to continue the conversation with its history. - Use
get_file_download_urlfor any artifact IDs returned in the result.
Tool reference
| Tool | What it does | Required scopes |
|---|---|---|
ask_viktor |
Start a new thread and wait for its result | threads:create, runs:create, runs:read |
create_thread |
Start a new thread and queue a run without waiting | threads:create, runs:create |
send_message |
Continue an existing thread and queue a run | messages:create, runs:create |
wait_for_run |
Wait for a run to finish and return its result | runs:read |
get_run |
Read a run's current status | runs:read |
get_run_result |
Fetch a terminal run's result | runs:read |
cancel_run |
Request cancellation of an in-flight run | runs:create |
list_threads |
List the key's threads, newest first | threads:read |
get_thread |
Get a thread's status | threads:read |
list_messages |
List user-visible messages in a thread | messages:read |
list_runs |
List a thread's runs, newest first | runs:read |
run_script |
Run a Python script directly in the sandbox and wait for its result | scripts:execute |
wait_for_script_run |
Wait for a script run to finish and return its result | scripts:execute |
get_script_run |
Read a script run's status and result | scripts:execute |
cancel_script_run |
Cancel a queued script run | scripts:execute |
list_integrations |
List connected integrations and their SDK modules | integrations:read |
list_integration_tools |
List an integration's SDK tools with schemas and snippets | integrations:read |
get_file_download_url |
Exchange an artifact token for a short-lived URL | files:read |
whoami |
Identify the key, scopes, and rate limits | None |
Script runs without an agent
run_script executes one Python script directly in the workspace sandbox — no agent turn. The script runs as the key owner's identity and can call connected integrations through the workspace SDK. Discover what it can call with list_integrations and list_integration_tools; each tool comes with a runnable snippet that run_script accepts as-is. Output files written to the directory in the VIKTOR_OUTPUT_DIR environment variable come back as artifacts for get_file_download_url. If the wait ends before the script finishes, the response includes wait_timed_out: true — continue with wait_for_script_run, not another run_script. See script runs in the Public API guide for limits.
Structured output
ask_viktor, create_thread, and send_message accept the same response_format JSON Schema as the REST API. When supplied, the completed result includes a validated json value. See the Public API guide.
Timeouts, progress, and retries
ask_viktor and wait_for_run perform bounded server-side polling. Clients that send an MCP progress token receive best-effort progress notifications while waiting.
Every tool call is rate limited against the same policy as its REST equivalent, scaled to the workspace's plan tier (higher plans get proportionally higher limits — see the Public API guide). If a wait times out, call wait_for_run again with the same run ID. Use idempotency_key whenever a tool starts a run so reconnects and retries cannot duplicate work.
Errors
Authentication failures are plain HTTP 401 or 403 responses so MCP clients can recognize credential problems. Tool failures are machine-readable JSON strings with an error and message, and may include http_status, scope, or rate-limit details.
Common fixes:
- No tools appear: verify the key with
whoami, then grant the required scopes. insufficient_scope: add the named scope to the key or choose a different tool.wait_timed_out: callwait_for_runagain with the returned run ID.thread_busy: wait for the active run before sending another message to that thread.rate_limit_exceeded: wait for the retry interval before calling again.
OpenAI & Anthropic Compatible API
URL: https://viktor.com/docs/chat-completions Summary: Drive Viktor agent runs with the OpenAI or Anthropic SDKs you already use — no new client code required.
If your application already talks to OpenAI or Anthropic, you can point it at Viktor and get an AI employee instead of a bare model. The compatible API accepts the standard Chat Completions, Responses, and Messages wire formats and runs a full Viktor agent behind them — with access to your connected tools.
- OpenAI-style base URL:
https://api.viktor.com/api/compat/v1 - Anthropic-style base URL:
https://api.viktor.com/api/compat - Model ID:
viktor - Authentication: the same Viktor API keys, with the
chat:completionsscope granted.
Quickstart
Grant the chat:completions scope to a key in Settings → API Keys, then swap the base URL, API key, and model in your existing code:
from openai import OpenAI
client = OpenAI(
base_url="https://api.viktor.com/api/compat/v1",
api_key="zt_live_sk_...",
)
completion = client.chat.completions.create(
model="viktor",
messages=[
{"role": "user", "content": "Summarize yesterday's Stripe payouts."}
],
)
print(completion.choices[0].message.content)
The Anthropic SDK works the same way with base_url="https://api.viktor.com/api/compat".
Endpoints
| Method | Endpoint | Protocol |
|---|---|---|
POST |
/api/compat/v1/chat/completions |
OpenAI Chat Completions |
POST |
/api/compat/v1/responses |
OpenAI Responses |
POST |
/api/compat/v1/messages |
Anthropic Messages |
POST |
/api/compat/v1/messages/count_tokens |
Anthropic token counting |
GET |
/api/compat/v1/models |
Model listing (returns viktor) |
Streaming is supported on all three chat surfaces.
How it differs from a bare model
- Each call runs the Viktor agent, not a single model invocation. Viktor can use your connected integrations and skills while producing the reply, so calls take longer than a plain LLM call and are capped at 10 minutes.
- Conversation state: Chat Completions and Anthropic Messages are stateless — send the full message history on each call, as you would with the upstream APIs. The Responses surface supports
previous_response_idto continue a server-side conversation across calls. - System messages are appended to Viktor's own system prompt, never substituted, so Viktor stays Viktor.
- Structured output via
response_formatwith a JSON Schema is supported, as are tool declarations. - Credits: each call consumes workspace credits like any other Viktor run. See how credits work.
- Rate limits: requests are limited per route and per key owner (all keys of the same owner share one quota), and the limits scale with your workspace plan tier — higher plans get proportionally higher limits. A
429includesRetry-After; wait for the advertised interval before retrying. See rate limits and retries.
When to use which API
- Use this compatible API when you have existing OpenAI or Anthropic client code and want a drop-in upgrade.
- Use the Public API when you want explicit threads, runs you can poll or cancel, and downloadable file artifacts.
- Use the MCP server when the caller is itself an AI agent.
Integrations
Viktor connects to 3,200+ tools. Every integration has a detail page at https://viktor.com/integrations/{slug} and a markdown twin at https://viktor.com/integrations/{slug}/md (also served from the canonical URL via Accept: text/markdown). Each page lists the actions Viktor can run in that tool, example delegations, setup, security, and FAQ. Full directory: https://viktor.com/integrations (A-Z index: https://viktor.com/integrations#integrations-index). Machine-readable URL lists: https://viktor.com/sitemap-integrations-tier1.xml.
The 304 integrations with the deepest coverage are listed below; every other supported tool also has a detail page at the URL pattern above:
- ActiveCampaign (20 actions): https://viktor.com/integrations/activecampaign
- Acuity Scheduling (11 actions): https://viktor.com/integrations/acuity-scheduling
- Add to Calendar PRO (22 actions): https://viktor.com/integrations/add-to-calendar-pro
- Aero Workflow (12 actions): https://viktor.com/integrations/aero-workflow
- Agile CRM (14 actions): https://viktor.com/integrations/agile-crm
- Aircall (7 actions): https://viktor.com/integrations/aircall
- Airtable (18 actions): https://viktor.com/integrations/airtable
- Akeneo (12 actions): https://viktor.com/integrations/akeneo
- Alegra (10 actions): https://viktor.com/integrations/alegra
- All-Images.ai (5 actions): https://viktor.com/integrations/all-images-ai
- Amara (16 actions): https://viktor.com/integrations/amara
- AmeriCommerce (10 actions): https://viktor.com/integrations/americommerce
- Apify (7 actions): https://viktor.com/integrations/apify
- APIVerve (10 actions): https://viktor.com/integrations/apiverve
- Apollo.io (10 actions): https://viktor.com/integrations/apollo-io
- Asana (153 actions): https://viktor.com/integrations/asana
- Ashby (11 actions): https://viktor.com/integrations/ashby
- Attio (8 actions): https://viktor.com/integrations/attio
- Autotask PSA (10 actions): https://viktor.com/integrations/autotask-psa
- AWS (23 actions): https://viktor.com/integrations/aws
- Baremetrics (36 actions): https://viktor.com/integrations/baremetrics
- Basecamp (139 actions): https://viktor.com/integrations/basecamp
- Beehiiv (12 actions): https://viktor.com/integrations/beehiiv
- Belco (12 actions): https://viktor.com/integrations/belco
- Billbee (19 actions): https://viktor.com/integrations/billbee
- BingX (26 actions): https://viktor.com/integrations/bingx
- Bitbucket (8 actions): https://viktor.com/integrations/bitbucket
- Bitget (42 actions): https://viktor.com/integrations/bitget
- Bitly (6 actions): https://viktor.com/integrations/bitly
- Bol.com (14 actions): https://viktor.com/integrations/bol-com
- Booking Experts (24 actions): https://viktor.com/integrations/booking-experts
- Bot for Slack (24 actions): https://viktor.com/integrations/bot-for-slack
- Box (8 actions): https://viktor.com/integrations/box
- Brainbase Labs (26 actions): https://viktor.com/integrations/brainbase-labs
- Brex (5 actions): https://viktor.com/integrations/brex
- Browser Use (25 actions): https://viktor.com/integrations/browser-use
- Buddee (15 actions): https://viktor.com/integrations/buddee
- Buildkite (15 actions): https://viktor.com/integrations/buildkite
- Cal.com (7 actions): https://viktor.com/integrations/cal-com
- Calendly (12 actions): https://viktor.com/integrations/calendly
- Canny (10 actions): https://viktor.com/integrations/canny
- Canva (5 actions): https://viktor.com/integrations/canva
- ChartMogul (22 actions): https://viktor.com/integrations/chartmogul
- ClickUp (52 actions): https://viktor.com/integrations/clickup
- Clockify (8 actions): https://viktor.com/integrations/clockify
- Clockwork Recruiting (12 actions): https://viktor.com/integrations/clockwork-recruiting
- Close (6 actions): https://viktor.com/integrations/close
- Cloudflare (20 actions): https://viktor.com/integrations/cloudflare
- Coda (14 actions): https://viktor.com/integrations/coda
- CoinCatch (10 actions): https://viktor.com/integrations/coincatch
- CoinGecko (12 actions): https://viktor.com/integrations/coingecko
- Confluence (69 actions): https://viktor.com/integrations/confluence
- Connecteam (7 actions): https://viktor.com/integrations/connecteam
- Connectwise PSA (18 actions): https://viktor.com/integrations/connectwise-psa
- Constant Contact (9 actions): https://viktor.com/integrations/constant-contact
- ConvertKit (6 actions): https://viktor.com/integrations/convertkit
- Crove (12 actions): https://viktor.com/integrations/crove
- Cursor (8 actions): https://viktor.com/integrations/cursor
- Customer.io (49 actions): https://viktor.com/integrations/customer-io
- Dart (15 actions): https://viktor.com/integrations/dart
- Databricks (42 actions): https://viktor.com/integrations/databricks
- Datadog (13 actions): https://viktor.com/integrations/datadog
- DataForSEO (57 actions): https://viktor.com/integrations/dataforseo
- Daytona (16 actions): https://viktor.com/integrations/daytona
- Deel (24 actions): https://viktor.com/integrations/deel
- Devin (13 actions): https://viktor.com/integrations/devin
- DigitalOcean (6 actions): https://viktor.com/integrations/digitalocean
- Discord Bot (22 actions): https://viktor.com/integrations/discord-bot
- Dixa (16 actions): https://viktor.com/integrations/dixa
- Docusign (13 actions): https://viktor.com/integrations/docusign
- Drata (14 actions): https://viktor.com/integrations/drata
- Dropbox (19 actions): https://viktor.com/integrations/dropbox
- Elastic Email (15 actions): https://viktor.com/integrations/elastic-email
- ElevenLabs (10 actions): https://viktor.com/integrations/elevenlabs
- Enrich Layer (25 actions): https://viktor.com/integrations/enrich-layer
- eTrusted (10 actions): https://viktor.com/integrations/etrusted
- Eventbrite (6 actions): https://viktor.com/integrations/eventbrite
- Everstox (10 actions): https://viktor.com/integrations/everstox
- Facebook (43 actions): https://viktor.com/integrations/facebook
- FireCrawl (7 actions): https://viktor.com/integrations/firecrawl
- Float (10 actions): https://viktor.com/integrations/float
- Flodesk (6 actions): https://viktor.com/integrations/flodesk
- FogBugz (10 actions): https://viktor.com/integrations/fogbugz
- Formatting (22 actions): https://viktor.com/integrations/formatting
- Fortnox (21 actions): https://viktor.com/integrations/fortnox
- Freshchat (10 actions): https://viktor.com/integrations/freshchat
- Freshdesk (56 actions): https://viktor.com/integrations/freshdesk
- Freshservice (11 actions): https://viktor.com/integrations/freshservice
- Front (27 actions): https://viktor.com/integrations/front
- GitHub (300 actions): https://viktor.com/integrations/github
- GitLab (16 actions): https://viktor.com/integrations/gitlab
- Gmail (21 actions): https://viktor.com/integrations/gmail
- GoDaddy (5 actions): https://viktor.com/integrations/godaddy
- Gong (5 actions): https://viktor.com/integrations/gong
- Google Ads (74 actions): https://viktor.com/integrations/google-ads
- Google Analytics (6 actions): https://viktor.com/integrations/google-analytics
- Google BigQuery (62 actions): https://viktor.com/integrations/google-bigquery
- Google Calendar (17 actions): https://viktor.com/integrations/google-calendar
- Google Chat (7 actions): https://viktor.com/integrations/google-chat
- Google Cloud (23 actions): https://viktor.com/integrations/google-cloud
- Google Contacts (12 actions): https://viktor.com/integrations/google-contacts
- Google Dialogflow (20 actions): https://viktor.com/integrations/google-dialogflow
- Google Docs (15 actions): https://viktor.com/integrations/google-docs
- Google Drive (0 actions): https://viktor.com/integrations/google-drive
- Google Forms (6 actions): https://viktor.com/integrations/google-forms
- Google Photos (6 actions): https://viktor.com/integrations/google-photos
- Google Sheets (38 actions): https://viktor.com/integrations/google-sheets
- Google Slides (18 actions): https://viktor.com/integrations/google-slides
- Google Tag Manager (5 actions): https://viktor.com/integrations/google-tag-manager
- Google Tasks (8 actions): https://viktor.com/integrations/google-tasks
- Google Vertex AI (5 actions): https://viktor.com/integrations/google-vertex-ai
- Gorgias (23 actions): https://viktor.com/integrations/gorgias
- Grafana (10 actions): https://viktor.com/integrations/grafana
- Harvest (5 actions): https://viktor.com/integrations/harvest
- Hedy (19 actions): https://viktor.com/integrations/hedy
- Help Scout (12 actions): https://viktor.com/integrations/help-scout
- HelpDocs (13 actions): https://viktor.com/integrations/helpdocs
- Helper Functions (22 actions): https://viktor.com/integrations/helper-functions
- HelpSpot (11 actions): https://viktor.com/integrations/helpspot
- Hex (11 actions): https://viktor.com/integrations/hex
- HeyGen (5 actions): https://viktor.com/integrations/heygen
- HighLevel (OAuth) (6 actions): https://viktor.com/integrations/highlevel-oauth
- HubSpot (245 actions): https://viktor.com/integrations/hubspot
- Hugging Face (6 actions): https://viktor.com/integrations/hugging-face
- Hunter (13 actions): https://viktor.com/integrations/hunter
- Instagram (36 actions): https://viktor.com/integrations/instagram
- Intercom (11 actions): https://viktor.com/integrations/intercom
- IPGeolocation (12 actions): https://viktor.com/integrations/ipgeolocation
- Jibble (11 actions): https://viktor.com/integrations/jibble
- Jira (102 actions): https://viktor.com/integrations/jira
- Jira & Confluence (41 actions): https://viktor.com/integrations/jira-confluence
- Jira Data Center (26 actions): https://viktor.com/integrations/jira-data-center
- Jira Service Desk (12 actions): https://viktor.com/integrations/jira-service-desk
- Jotform (5 actions): https://viktor.com/integrations/jotform
- Kanban Tool (13 actions): https://viktor.com/integrations/kanban-tool
- Keap (Infusionsoft) (34 actions): https://viktor.com/integrations/keap-infusionsoft
- Kustomer (15 actions): https://viktor.com/integrations/kustomer
- LaunchDarkly (10 actions): https://viktor.com/integrations/launchdarkly
- lemlist (14 actions): https://viktor.com/integrations/lemlist
- Lever (16 actions): https://viktor.com/integrations/lever
- Lightspeed eCom (C-Series) (18 actions): https://viktor.com/integrations/lightspeed-ecom-c-series
- LimoExpress (10 actions): https://viktor.com/integrations/limoexpress
- Linear (86 actions): https://viktor.com/integrations/linear
- LinkedIn (21 actions): https://viktor.com/integrations/linkedin
- LinkedIn Ads (5 actions): https://viktor.com/integrations/linkedin-ads
- LinkupAPI for LinkedIn (15 actions): https://viktor.com/integrations/linkupapi-for-linkedin
- LiveAgent (10 actions): https://viktor.com/integrations/liveagent
- Loops.so (8 actions): https://viktor.com/integrations/loops-so
- Lusha (23 actions): https://viktor.com/integrations/lusha
- Mailchimp (29 actions): https://viktor.com/integrations/mailchimp
- MailerLite (6 actions): https://viktor.com/integrations/mailerlite
- Mailgun (11 actions): https://viktor.com/integrations/mailgun
- Mastodon (21 actions): https://viktor.com/integrations/mastodon
- Mautic (11 actions): https://viktor.com/integrations/mautic
- Mboum (45 actions): https://viktor.com/integrations/mboum
- MeisterTask (13 actions): https://viktor.com/integrations/meistertask
- Meta Ads (106 actions): https://viktor.com/integrations/meta-ads
- Metabase (7 actions): https://viktor.com/integrations/metabase
- Mews (18 actions): https://viktor.com/integrations/mews
- Microsoft 365 Planner (5 actions): https://viktor.com/integrations/microsoft-365-planner
- Microsoft Bookings (10 actions): https://viktor.com/integrations/microsoft-bookings
- Microsoft Dynamics 365 Sales (11 actions): https://viktor.com/integrations/microsoft-dynamics-365-sales
- Microsoft Entra ID (12 actions): https://viktor.com/integrations/microsoft-entra-id
- Microsoft Excel (9 actions): https://viktor.com/integrations/microsoft-excel
- Microsoft OneNote (11 actions): https://viktor.com/integrations/microsoft-onenote
- Microsoft Outlook Calendar (16 actions): https://viktor.com/integrations/microsoft-outlook-calendar
- Microsoft Outlook Email (26 actions): https://viktor.com/integrations/microsoft-outlook-email
- Microsoft Power BI (15 actions): https://viktor.com/integrations/microsoft-power-bi
- Microsoft Teams (0 actions): https://viktor.com/integrations/microsoft-teams
- Microsoft To Do (6 actions): https://viktor.com/integrations/microsoft-to-do
- Mindbody (12 actions): https://viktor.com/integrations/mindbody
- Miro (81 actions): https://viktor.com/integrations/miro
- Missive (6 actions): https://viktor.com/integrations/missive
- Mode (16 actions): https://viktor.com/integrations/mode
- Monday.com (111 actions): https://viktor.com/integrations/monday-com
- Moodle (27 actions): https://viktor.com/integrations/moodle
- Motion (7 actions): https://viktor.com/integrations/motion
- MySQL (10 actions): https://viktor.com/integrations/mysql
- NationBuilder (10 actions): https://viktor.com/integrations/nationbuilder
- Neon (35 actions): https://viktor.com/integrations/neon
- Notion (26 actions): https://viktor.com/integrations/notion
- Nutshell (20 actions): https://viktor.com/integrations/nutshell
- Odoo (7 actions): https://viktor.com/integrations/odoo
- Offorte (14 actions): https://viktor.com/integrations/offorte
- Ollama (10 actions): https://viktor.com/integrations/ollama
- OnlineCheckWriter (10 actions): https://viktor.com/integrations/onlinecheckwriter
- OpenAI (ChatGPT) (42 actions): https://viktor.com/integrations/openai-chatgpt
- Orderspace (10 actions): https://viktor.com/integrations/orderspace
- Outlook (26 actions): https://viktor.com/integrations/outlook
- Overloop (23 actions): https://viktor.com/integrations/overloop
- Paazl (16 actions): https://viktor.com/integrations/paazl
- PagerDuty (31 actions): https://viktor.com/integrations/pagerduty
- PandaDoc (18 actions): https://viktor.com/integrations/pandadoc
- PayPal (10 actions): https://viktor.com/integrations/paypal
- Paystack (31 actions): https://viktor.com/integrations/paystack
- pCloud (12 actions): https://viktor.com/integrations/pcloud
- PDF.co (17 actions): https://viktor.com/integrations/pdf-co
- Perplexity (6 actions): https://viktor.com/integrations/perplexity
- Picqer (26 actions): https://viktor.com/integrations/picqer
- Pipedream Utils (45 actions): https://viktor.com/integrations/pipedream-utils
- Pipedrive (26 actions): https://viktor.com/integrations/pipedrive
- Pipefy (16 actions): https://viktor.com/integrations/pipefy
- Pipeline (22 actions): https://viktor.com/integrations/pipeline
- Planview Leankit (28 actions): https://viktor.com/integrations/planview-leankit
- PlentyONE (12 actions): https://viktor.com/integrations/plentyone
- PostgreSQL (9 actions): https://viktor.com/integrations/postgresql
- PostHog (300 actions): https://viktor.com/integrations/posthog
- Postmark (27 actions): https://viktor.com/integrations/postmark
- Prisma (12 actions): https://viktor.com/integrations/prisma
- Prisma Postgres (12 actions): https://viktor.com/integrations/prisma-postgres
- ProdPad (24 actions): https://viktor.com/integrations/prodpad
- ProWorkflow (11 actions): https://viktor.com/integrations/proworkflow
- QuickBooks (34 actions): https://viktor.com/integrations/quickbooks
- QuickBooks Sandbox (43 actions): https://viktor.com/integrations/quickbooks-sandbox
- Raindrop (11 actions): https://viktor.com/integrations/raindrop
- Recruiterflow (14 actions): https://viktor.com/integrations/recruiterflow
- Returnista (15 actions): https://viktor.com/integrations/returnista
- Returnless (16 actions): https://viktor.com/integrations/returnless
- Rex (10 actions): https://viktor.com/integrations/rex
- Rhombus (12 actions): https://viktor.com/integrations/rhombus
- RingCentral (8 actions): https://viktor.com/integrations/ringcentral
- Roam (10 actions): https://viktor.com/integrations/roam
- Roam Research (10 actions): https://viktor.com/integrations/roam-research
- Roblox (19 actions): https://viktor.com/integrations/roblox
- Roll (13 actions): https://viktor.com/integrations/roll
- Rydoo (17 actions): https://viktor.com/integrations/rydoo
- Salesflare (21 actions): https://viktor.com/integrations/salesflare
- Salesforce (11 actions): https://viktor.com/integrations/salesforce
- Sendcloud (24 actions): https://viktor.com/integrations/sendcloud
- Sendoso (16 actions): https://viktor.com/integrations/sendoso
- Sentry (31 actions): https://viktor.com/integrations/sentry
- ServiceM8 (75 actions): https://viktor.com/integrations/servicem8
- ServiceNow (25 actions): https://viktor.com/integrations/servicenow
- sevDesk (11 actions): https://viktor.com/integrations/sevdesk
- SharePoint (23 actions): https://viktor.com/integrations/sharepoint
- ShipStation (5 actions): https://viktor.com/integrations/shipstation
- Shopify (OAuth) (56 actions): https://viktor.com/integrations/shopify-oauth
- Shopware (11 actions): https://viktor.com/integrations/shopware
- Slack (48 actions): https://viktor.com/integrations/slack
- Slackbot (48 actions): https://viktor.com/integrations/slackbot
- Smartsheet (27 actions): https://viktor.com/integrations/smartsheet
- Snipe-IT (17 actions): https://viktor.com/integrations/snipe-it
- Splitwise (27 actions): https://viktor.com/integrations/splitwise
- Spotify (20 actions): https://viktor.com/integrations/spotify
- Strava (36 actions): https://viktor.com/integrations/strava
- Stripe (37 actions): https://viktor.com/integrations/stripe
- Supabase (29 actions): https://viktor.com/integrations/supabase
- SureCart (81 actions): https://viktor.com/integrations/surecart
- Symbl.ai (23 actions): https://viktor.com/integrations/symbl-ai
- Taiga (12 actions): https://viktor.com/integrations/taiga
- TalentHR (13 actions): https://viktor.com/integrations/talenthr
- Teamgate (27 actions): https://viktor.com/integrations/teamgate
- Teamleader Focus (17 actions): https://viktor.com/integrations/teamleader-focus
- Teamwork (10 actions): https://viktor.com/integrations/teamwork
- Teamwork Desk (15 actions): https://viktor.com/integrations/teamwork-desk
- Telegram (28 actions): https://viktor.com/integrations/telegram
- Telnyx (11 actions): https://viktor.com/integrations/telnyx
- Thanks.io (12 actions): https://viktor.com/integrations/thanks-io
- Ticketmaster (15 actions): https://viktor.com/integrations/ticketmaster
- Todoist (45 actions): https://viktor.com/integrations/todoist
- Token Metrics (25 actions): https://viktor.com/integrations/token-metrics
- Tomba (20 actions): https://viktor.com/integrations/tomba
- TOPdesk (22 actions): https://viktor.com/integrations/topdesk
- Trello (35 actions): https://viktor.com/integrations/trello
- Trengo (34 actions): https://viktor.com/integrations/trengo
- Twilio (24 actions): https://viktor.com/integrations/twilio
- Twilio SendGrid (30 actions): https://viktor.com/integrations/twilio-sendgrid
- Twitch (17 actions): https://viktor.com/integrations/twitch
- Typeform (15 actions): https://viktor.com/integrations/typeform
- Typefully (5 actions): https://viktor.com/integrations/typefully
- Universal API (27 actions): https://viktor.com/integrations/universal-api
- Unleashed Software (16 actions): https://viktor.com/integrations/unleashed-software
- UpKeep (17 actions): https://viktor.com/integrations/upkeep
- Upsales (45 actions): https://viktor.com/integrations/upsales
- Vapi (6 actions): https://viktor.com/integrations/vapi
- VBOUT (11 actions): https://viktor.com/integrations/vbout
- Vimeo (5 actions): https://viktor.com/integrations/vimeo
- Visma E-conomic (16 actions): https://viktor.com/integrations/visma-e-conomic
- Waitwhile (18 actions): https://viktor.com/integrations/waitwhile
- Webflow (73 actions): https://viktor.com/integrations/webflow
- WhoisFreaks (13 actions): https://viktor.com/integrations/whoisfreaks
- Whop (6 actions): https://viktor.com/integrations/whop
- Wise (10 actions): https://viktor.com/integrations/wise
- Wix (26 actions): https://viktor.com/integrations/wix
- WooCommerce (22 actions): https://viktor.com/integrations/woocommerce
- WordPress.org (14 actions): https://viktor.com/integrations/wordpress-org
- Workday (10 actions): https://viktor.com/integrations/workday
- Wrike (12 actions): https://viktor.com/integrations/wrike
- xAI (5 actions): https://viktor.com/integrations/xai
- Xero (38 actions): https://viktor.com/integrations/xero
- Xero Accounting (38 actions): https://viktor.com/integrations/xero-accounting
- Yandex (21 actions): https://viktor.com/integrations/yandex
- YouTube (51 actions): https://viktor.com/integrations/youtube
- Zendesk (33 actions): https://viktor.com/integrations/zendesk
- Zenfulfillment (11 actions): https://viktor.com/integrations/zenfulfillment
- ZeroTier (10 actions): https://viktor.com/integrations/zerotier
- Zoho (12 actions): https://viktor.com/integrations/zoho
- Zoho Books (26 actions): https://viktor.com/integrations/zoho-books
- Zoho CRM (12 actions): https://viktor.com/integrations/zoho-crm
- Zoho Desk (30 actions): https://viktor.com/integrations/zoho-desk
- Zoho Inventory (10 actions): https://viktor.com/integrations/zoho-inventory
- Zoho Projects (10 actions): https://viktor.com/integrations/zoho-projects
- Zoom (24 actions): https://viktor.com/integrations/zoom
- Zoom Admin (27 actions): https://viktor.com/integrations/zoom-admin
Trust Summary
- Viktor uses managed OAuth integrations instead of asking users to paste API keys into chat.
- Sensitive actions can require explicit human approval before execution.
- Viktor does not train on customer data.
Website Credit
Viktor's public marketing website was designed and built by Grafit Agency: https://www.grafit.agency/
Research
- What Breaks at 100,000 Tools: Lessons on tool use, context windows, memory, and UX from building Viktor (~3.1K tokens)
- How We Built Viktor Around Prompt Caching: How Viktor's thread engine cuts agent costs 80% with byte-stable prefixes, append-only threads, and in-cache compaction (~5.6K tokens)
Blog - Comparisons
- Viktor vs ChatGPT: ChatGPT is a browser chatbot. Viktor is a Slack-native AI employee with 3,200+ integrations that takes action (~1.8K tokens)
- Viktor vs Devin vs Manus: Viktor covers all business ops from Slack. Devin writes code. Manus does research. Pricing and feature comparison (~2.5K tokens)
- Viktor vs OpenClaw: OpenClaw is free and self-hosted. Viktor is managed with 3,200+ one-click integrations. Security, pricing, use cases (~4.2K tokens)
- Viktor vs OpenClaw for Teams: Team-focused comparison covering security, integrations, access, and real business use (~1.7K tokens)
- Viktor vs Claude in Slack: Claude answers questions. Viktor takes real actions across 3,200+ tools and runs scheduled tasks (~9.1K tokens)
- Viktor vs Tasklet: Tasklet posts scheduled reports. Viktor takes action, answers questions, and generates deliverables (~4.1K tokens)
- Viktor vs Make: Make is a visual scenario canvas. Viktor is a Slack-native AI employee. When each tool actually fits (~3.4K tokens)
- Viktor vs Gemini: Gemini makes you faster inside Google Workspace. Viktor is an AI employee that takes whole tasks across 3,200+ tools from Slack and Teams (~2.8K tokens)
- Viktor vs Notion AI: Notion AI helps you inside Notion. Viktor acts across 3,200+ tools from Slack, with Notion as one of them (~2.4K tokens)
- Viktor vs Relevance AI: Relevance AI lets you build a workforce of agents. Viktor is an AI employee you delegate to from Slack (~2.2K tokens)
- Viktor vs Microsoft Copilot: Copilot assists you inside Microsoft 365 apps. Viktor takes whole tasks across 3,200+ tools from Slack and Teams (~3.4K tokens)
- Viktor vs Dust: Dust is a workspace where you build custom AI agents. Viktor is an AI employee you @mention in Slack or Teams. Honest trade-off comparison (~2.6K tokens)
- Viktor vs Poke: Poke is a personal assistant in your texting apps. Viktor is an AI employee for your company's work in Slack and Teams (~2.4K tokens)
- Viktor vs Salesforce Agentforce: Agentforce is Salesforce's platform for building AI agents on CRM data. Viktor is an AI employee you hire into Slack or Teams (~3.6K tokens)
- Viktor vs Lindy: Lindy builds AI agents on a visual canvas with phone agents and computer use. Viktor is an AI employee in Slack with 3,200+ integrations. Honest wins on both sides (~2.6K tokens)
- Viktor vs OpenAI Presence: Presence is a deployed agent OpenAI's engineers scope for one customer-facing workflow. Viktor is an AI employee you add to Slack or Teams. Where each one honestly wins (~2.7K tokens)
- Viktor vs Claude Cowork: Cowork is a desktop handoff where you give Claude a task in your own folders. Viktor is an AI employee your whole team @mentions in Slack or Teams. Honest wins on both sides (~2.8K tokens)
- Viktor vs Atlassian Rovo: Rovo is Atlassian's AI inside Jira and Confluence, with the Jira Delivery Agent running standups and delivery health checks. Viktor is an AI employee in Slack or Teams for work that spans your whole stack. Honest wins on both sides (~2.7K tokens)
- Viktor vs Grok Bot: Grok Bot is xAI's squad of always-on agents with their own cloud computer, on macOS and iOS. Viktor is one AI employee in your team's Slack or Teams. Honest wins on both sides (~2.8K tokens)
- Viktor vs Sierra: Sierra builds AI agents that talk to your customers across voice, chat, email and WhatsApp. Viktor is an AI employee for internal work in Slack and Teams. Why most support orgs eventually need both (~2.7K tokens)
- Viktor vs Gemini Enterprise Agent Platform: Google's platform gives teams that build their own agents identity, a gateway, a registry and continuous evaluation. Viktor is an AI employee you message in Slack or Teams. How to choose when you have no engineers free to build (~2.8K tokens)
- Viktor vs Slackbot: Slackbot is Slack's own AI, native and zero-install. Viktor is an AI employee in the same channel with 3,200+ integrations and standing jobs (~2.6K tokens)
Blog - Best-of Lists
- Best AI Agents for Slack (2026): 7 Slack AI agents compared: features, pricing, integrations (~2.8K tokens)
- Best AI Agents for Microsoft Teams (2026): 7 Teams AI agents compared: features, pricing, capabilities (~3.7K tokens)
- Best AI Tools for Business (2026): 13 AI tools tested on real workflows. Pricing, trade-offs, specific problem fit (~4.7K tokens)
- Viktor on the Slack Marketplace: Viktor passed Salesforce security review and is officially listed. What Slack checks and why it matters (~2.9K tokens)
- 5 Personal Assistants for Founders (2026): ChatGPT, Claude, Gemini, Lindy, and Viktor compared by what they actually do with real tasks (~3.0K tokens)
- 7 Lindy Alternatives (2026): Seven tools worth a look if Lindy is not the fit, from builders to delegate-first AI employees (~2.7K tokens)
Blog - Use Cases & Guides
- What Is an AI Coworker?: Definition, how it differs from chatbots and Zapier, the $47B category (~2.4K tokens)
- What Is an AI Employee?: Framework for telling real AI employees from rebranded chatbots, plus what the architecture looks like (~4.4K tokens)
- Replace Weekly Reporting With AI: One Slack prompt replaces 4 hours of reporting across Stripe, Google Ads, Meta Ads, HubSpot (~2.5K tokens)
- 20 Business Processes You Can Automate: Real examples with exact Slack prompts for each (~6.6K tokens)
- Small Business Automation: How a 5-person company automated invoicing, CRM, follow-ups, and proposals from Slack (~3.8K tokens)
- Automation vs AI: 10 workflows where if-then automation breaks and AI takes over (~4.4K tokens)
- Zapier Alternative: When you've outgrown if-then logic entirely (~4.1K tokens)
- AI for Sales: Sales reps spend 70% of their week on non-selling tasks. Three workflows where AI cuts hours to minutes (~4.1K tokens)
- AI for Recruiting: Turn candidate research and interview prep into one message (~4.4K tokens)
- AI for Agencies: Manage 20 client accounts across Meta, Google, CRM, and analytics from Slack (~4.3K tokens)
- AI for Ecommerce: Reconcile Shopify, Amazon, fulfillment, ads, and support from Slack (~4.3K tokens)
- AI for Bookkeeping: Match invoices, receipts, CRM deals, Gmail attachments, and QuickBooks records (~4.2K tokens)
- AI for Content Creation: Handle briefs, context, analytics, SEO, CMS handoff, and review, not just first drafts (~4.7K tokens)
- AI Google Ads Management: Performance audits, keyword management, and PDF reports from Slack (~2.1K tokens)
- AI Executive Assistant: Connected to HubSpot, Stripe, and Google Ads, not just scheduling (~3.7K tokens)
- First Workflow Automation in 30 Minutes: Step-by-step guide to building your first automated workflow with no code (~2.8K tokens)
- Will AI Take Your Job?: The real question is which tasks to hand off and what to do with the freed hours (~3.0K tokens)
- AI for Customer Support: Context assembly cuts ticket handling time by 60-70% without replacing agents (~3.2K tokens)
- RPA vs AI Agents: Clear taxonomy for buyers: when RPA fits and when you need an AI agent (~3.8K tokens)
- 200 Emails Before Lunch: Email triage, routing, and context-enriched draft replies for human review (~3.8K tokens)
- AI for Operations Teams: Triage tickets, page owners, keep status pages honest. Real ops workflows with PagerDuty, Datadog, Linear, Zendesk (~3.6K tokens)
- AI for Marketing Teams: The weekly campaign loop that runs itself: Google Ads, Meta Ads, drafts, briefs, recap (~3.4K tokens)
- 5 Workflows to Automate First: Ranked list of the first five workflows to give an AI employee, with named tools and honest time savings (~4.0K tokens)
- How to Prompt an AI Coworker: Stop using ChatGPT habits. The three rules: name the channel, name the approver, name the tools (~3.5K tokens)
- AI for Customer Research: Turn calls, tickets, CRM notes, product requests, and churn notes into reviewable decisions (~4.0K tokens)
- AI for Legal Teams: Cut the busywork around contracts and intake while keeping legal judgment human (~2.5K tokens)
- AI for Consulting Firms: Win back the non-billable hours: research packs, proposals, status emails, CRM updates (~2.6K tokens)
- AI for Real Estate Teams: Absorb the cross-tool admin between deals so leads stay warm and documents get chased (~2.2K tokens)
- Recurring Tasks Your AI Coworker Should Own: Which repeating jobs to put on a schedule, and which to keep human (~2.4K tokens)
- The Same-Day Follow-Up: Turn every call into a drafted recap, staged deal, and queued tasks before you forget (~2.1K tokens)
- The AI Coworker Readiness Checklist: Eight questions to know if your team is ready to delegate real work (~2.5K tokens)
- Ship Internal Tools Without Engineers: Build small internal tools straight from Slack, no engineering ticket required (~2.7K tokens)
- Why Your AI Employee Cannot Access a Tool: The five auth failure modes behind most "it is broken" reports, and the two-minute fixes (~2.7K tokens)
- Connect Multiple Accounts: Run several Gmail inboxes, Stripe accounts, or workspaces through one AI employee (~2.4K tokens)
- Connect Any Tool to Your AI Employee: OAuth, API keys, and MCP: the three ways to hook up any tool (~2.7K tokens)
- Give Your AI Employee Memory: How skills and context files turn one-off answers into a coworker that remembers (~2.3K tokens)
- Set Up Your AI Employee in Slack: From install to first delegated task in one sitting (~3.1K tokens)
- Control What Your AI Employee Can Access: Scoped access, per-channel activation, and explicit tool grants (~2.7K tokens)
- How to Write Tasks for Your AI Employee: Context, definition of done, examples, constraints: briefs that come back done (~2.6K tokens)
- Set Up a Recurring Task: Scheduled work that keeps working, plus the silent failure modes to watch (~2.7K tokens)
- Keep a Human in the Loop: Approvals, previews, and kill switches: autonomy where safe, checkpoints where not (~2.6K tokens)
- Write a Brief Your AI Employee Can Run With: The five-part brief: outcome, sources, format, audience, edge cases (~2.4K tokens)
- What to Do When Your AI Employee Gets Stuck: The five-step debugging order that resolves most stalls in minutes (~2.4K tokens)
- Dashboards and Internal Tools: Turn recurring reports into live dashboards and small internal tools, no engineers (~2.4K tokens)
- Connect Tools Your AI Employee Doesn't Support Yet: The escalation path for unsupported tools: API keys, browser, MCP servers (~2.9K tokens)
- Control Where Your AI Employee Works: Channel scoping, per-person permissions, and review-first approvals in practice (~3.0K tokens)
- Add an AI Employee to Microsoft Teams: Native Teams setup guide, from app store install to first delegated task (~2.8K tokens)
- Roll Out an AI Employee to Your Whole Team: Members, shared vs personal tools, and workflow-by-workflow rollout (~2.7K tokens)
- What Teams Ask Before Hiring an AI Employee: The real before-questions and after-questions, both answered honestly (~2.7K tokens)
- Moving From Slack to Teams (or Running Both) Without Losing Your AI Employee: What transfers automatically, what needs a reconnect, and how to migrate recurring routines in order of pain, including the hybrid Slack plus Teams setup (~2.8K tokens)
- Automations Don't Break. They Go Quiet. Here Is How to Notice.: We audited 236 recurring routines in our own workspace and 22% had gone quiet; how to give every routine a consumer, a failure destination, and a five minute audit (~3.2K tokens)
- How to Decide Which Integrations Your AI Employee Actually Needs: A workflow-first method for deriving your integration list from recurring work, the read-then-write connection order, and the path when a tool is not in the catalog (~2.6K tokens)
- How to Share Your AI Employee's Work Outside Your Team (Live Pages, Not Attachments): Publishing dashboards, client status pages, and trackers as live Viktor Spaces on a named URL, with login gates and domain-restricted signups for sensitive content (~2.5K tokens)
- How to Run Security Due Diligence on an AI Employee (and Actually Pass Review): The document set to request (SOC 2, DPA, model training statement), five architectural questions with weak vs strong answers, live trial checks, and offboarding (~2.9K tokens)
- What Does an AI Employee Actually Do All Day?: A composite Monday-to-Friday of delegated work, and what the humans did instead (~2.4K tokens)
- What Happens to Your AI Employee When the Person Who Set It Up Leaves?: The bus factor of AI setups and the one-afternoon audit that fixes it (~2.1K tokens)
- How to Correct Your AI Employee When It Gets Something Wrong: The four-step correction loop that turns a wrong number into a permanent rule instead of a recurring chore (~2.5K tokens)
- How a Team Shares One AI Employee Without Chaos: The four failure modes of shared setups (conflicting rules, duplicates, DM silos, unowned definitions) and the ten-line conventions note that prevents them (~2.3K tokens)
- Who Should Manage Your AI Employee?: Why the ops lead closest to the work beats IT, the founder, and 'everyone', and what the fifteen-minute weekly management job actually is (~2.3K tokens)
- How to Tell If Your AI Employee Is Paying Off: A four-signal scoreboard (hours returned, cycle time, coverage, rework rate) built from work already done, plus the baseline week that anchors it (~2.3K tokens)
- When Should You Let Your AI Employee Act Without Review?: The three oversight tiers, the graduation rule of ten clean runs, and which actions stay review-first permanently (~2.0K tokens)
- AI for Property Management: What an AI Employee Actually Takes Over: Arrears chasing, maintenance triage, owner statements, and renewal flags on schedule instead of on memory, with humans approving every send (~2.1K tokens)
- Where Do You Actually Talk to Your AI Employee?: Surfaces (Slack and Teams) vs tools (3,200+ integrations): why the answer to 'does it work outside Slack' is two different questions (~2.1K tokens)
- How Your AI Employee Covers for You on Vacation: The one-hour handoff that splits your job into keeps-running, deputy-triaged, and waits-for-you, plus the return brief that replaces 400 unread messages (~2.1K tokens)
- AI for Client Onboarding: Turn a Signed Contract Into a Running Account: The handoff split between assembly work an AI employee drafts and the judgment calls a human keeps, the week-one setup, and the first 30 days with a daily stalled-items check (~2.2K tokens)
- How to Run One AI Employee Across a Team That Works in Several Languages: Separating the per-person app language (28 supported) from the work language stated in the brief, the mixed-language Monday digest pattern, and the five places translation actually slips (~2.1K tokens)
- How to Chase Unpaid Invoices Without Hiring a Collections Person: Reconcile before you chase, find the named payer and PO, run a three-touch cadence from the due date, and let an AI employee draft each reminder in your finance channel while escalation stays human (~2.2K tokens)
- How to Stop AI Workslop From Landing on Your Team: Why AI output that looks finished moves work to the receiver, the verification tax in Adaptavist's research with 2,500 knowledge workers, a five-rule handoff standard (sources travel, name the soft parts, one human owner, state the ask, fix at the source), and four metrics that replace adoption (~2.2K tokens)
- AI for Staffing Agencies: Job order intake from client email, submission packets, redeployment watch, timesheet and document chasing for perm and contract desks (~2.5K tokens)
- Personal Notes vs Team Memory: Decide What Your AI Employee Remembers Where: The split between shared workspace memory and a private personal memory store, what belongs in each, the one-way promotion habit, and how to handle contradictions between them (~2.3K tokens)
- How to Stop Two AI Tools From Doing the Same Work Twice: Mapping write access across AI tools and automations, splitting work by job rather than by tool, demoting a specialist tool to draft-only, and putting the run log where the team already works (~2.4K tokens)
Blog - Technical & Trust
- Don't Let Your AI Agent Act Without Asking: Why review-first matters and how Viktor implements it (~3.2K tokens)
- Is Your AI Agent Safe?: 7 security checks before connecting tools (~5.2K tokens)
- MCP vs OAuth: One is a protocol for AI agent connections, the other handles authentication (~3.6K tokens)
- What Makes an AI Company Agentic: Three tests most fail (~4.4K tokens)
- What Is Agentic AI?: Buyer's definition, three tests, and the tier categories (~4.5K tokens)
- AI Agents for Business: Practical buyer's guide covering categories, pricing, and pitfalls (~4.0K tokens)
- AI Assistant for Business: How a business assistant differs from ChatGPT and how to pick one (~3.9K tokens)
- Building an AI Workforce: Playbook for deploying AI employees across departments without disruption (~4.0K tokens)
- AI Onboarding for New Hires: Real workflow for onboarding without HR doing the same setup twice (~3.6K tokens)
- ChatGPT Teams vs AI Coworker: Honest comparison of where each one actually fits (~3.5K tokens)
- Evaluating AI Agents: 8-Question Checklist: Honest evaluation framework for buying an AI agent (~3.7K tokens)
- What AI Agents Cannot Do Yet: Honest list of agent limitations and how to use them anyway (~3.8K tokens)
- 12 Tasks Replaced With an AI Coworker: Specific list of tasks a 30-person team replaced in 30 days (~4.4K tokens)
- Optimize Viktor Credits: How power users get more done for less (~3.5K tokens)
- Why AI Agents Stall After the Pilot: The four reasons pilots die after the demo, and how to get past them (~2.6K tokens)
- Build an AI Agent or Hire an AI Employee?: The real tradeoff between building agents you maintain and hiring one that acts on day one (~2.2K tokens)
- Where Your Data Lives With an AI Employee: Plain-English data map: what Viktor sees, what is stored, where it lives, and what deletion means (~2.4K tokens)
- How to Verify Your AI Employee's Work: The trust-but-verify system: sources, spot checks, and corrections that become permanent skills (~2.5K tokens)
- Why Your AI Employee Isn't Delivering Results Yet: Five setup patterns causing underperformance and how to fix each one in an afternoon (~2.4K tokens)
- How to Handle Shadow AI on Your Team Without Banning It: Surface unapproved AI use with an amnesty inventory, a one-page two-list policy, and a sanctioned path people actually prefer (~2.4K tokens)
- How to Put an AI Employee in Your Discord Server: Give an AI employee a seat in Discord channels, decide which room owns which work, and scope guest access for clients and contractors (~2.5K tokens)
- How to Cut the Hours You Spend Babysitting AI: Where the 6.4 weekly hours of AI supervision go, which of it is worth keeping, and how to remove the context tax (~2.6K tokens)
- How to Judge an AI Teammate That Claims to Work Everywhere: The three questions (context, reach, boundary) that separate a real cross-app AI teammate from a chat window in more places, with the August 2026 Agentforce Coworker and QwenWork launches as evidence (~2.6K tokens)
- AI for Nonprofits: Where an AI employee helps a small nonprofit team (grant reporting, donor acknowledgment, volunteer logistics) and where humans must stay, with the Virtuous 2026 benchmark of 346 nonprofits as evidence (~2.8K tokens)
- How to Turn a Recurring Task Into a Shared Skill: Turn a process trapped in one person's head into a shared skill anyone can run by name, with the ownership and review habits that keep it current (~2.6K tokens)
- AI for the Construction Back Office: Subcontractor compliance, change orders, pay applications: the office paperwork an AI employee runs while the field stays untouched (~2.7K tokens)
- How to Put Your AI Employee's Work on Your Own Domain: Point a domain you own at a Space or published pages, keep the access policy that was already set, and stop sending clients a link they do not recognize (~2.3K tokens)
- What to Do When Your Company Data Is Not AI-Ready: Why "our data is not AI-ready" is usually a context problem rather than a storage one, and the one-week path from a messy process to a job that runs, with the Teradata/Wakefield 2026 survey of 1,000 technology leaders as evidence (~2.7K tokens)
- When Should Your AI Employee Use a Browser Instead of an Integration?: The rule for choosing an integration over a browser session, the three ways browser runs fail, and the scoping and evidence habits that keep them reviewable, with Anthropic's August 2026 computer use and browser use general availability as evidence (~2.5K tokens)
Common Questions
- What is Viktor? -> https://viktor.com/
- How much does Viktor cost? -> https://viktor.com/pricing
- Is Viktor secure? -> https://viktor.com/security
- What integrations does Viktor support? -> https://viktor.com/#integrations
- How is Viktor different from ChatGPT? -> https://viktor.com/blog/viktor-vs-chatgpt
- How is Viktor different from Devin? -> https://viktor.com/blog/viktor-vs-devin-vs-manus
- What is an AI employee? -> https://viktor.com/blog/what-is-an-ai-employee
- What is an AI coworker? -> https://viktor.com/blog/what-is-an-ai-coworker
- How much did Viktor raise? -> https://viktor.com/blog/viktor-series-a
- Best AI agent for Slack? -> https://viktor.com/blog/best-ai-agents-for-slack
- Best AI agent for Microsoft Teams? -> https://viktor.com/blog/best-ai-agents-for-microsoft-teams
- Can AI manage Google Ads? -> https://viktor.com/blog/ai-google-ads-management
- Can AI automate business processes? -> https://viktor.com/blog/business-process-automation-examples
- Is Viktor safe to use? -> https://viktor.com/blog/is-your-ai-agent-safe
- RPA vs AI agents? -> https://viktor.com/blog/rpa-vs-ai-agents
- Will AI replace my job? -> https://viktor.com/blog/will-ai-replace-my-job
- How to automate email? -> https://viktor.com/blog/ai-email-management
- Viktor vs Gemini? -> https://viktor.com/blog/viktor-vs-gemini
- Viktor vs Notion AI? -> https://viktor.com/blog/viktor-vs-notion-ai
- Viktor vs Lindy? -> https://viktor.com/blog/viktor-vs-lindy
- Build an AI agent or hire one? -> https://viktor.com/blog/build-ai-agent-or-hire-ai-employee
- Can AI help a nonprofit? -> https://viktor.com/blog/ai-for-nonprofits
- Why isn't my AI employee working? -> https://viktor.com/blog/why-your-ai-employee-isnt-delivering-results-yet
- How do you automate client onboarding? -> https://viktor.com/blog/ai-for-client-onboarding
- Can an AI employee work in multiple languages? -> https://viktor.com/blog/ai-employee-for-multilingual-teams
- How do we deal with shadow AI at work? -> https://viktor.com/blog/how-to-handle-shadow-ai-on-your-team
- Should we pick OpenAI Presence or an AI employee like Viktor? -> https://viktor.com/blog/viktor-vs-openai-presence
- Viktor vs Claude Cowork? -> https://viktor.com/blog/viktor-vs-claude-cowork
- How do we chase unpaid invoices without hiring someone? -> https://viktor.com/blog/how-to-chase-unpaid-invoices-with-an-ai-employee
- Can an AI employee work in Discord, not just Slack? -> https://viktor.com/blog/ai-employee-in-discord
- Why does AI create as much work as it saves? -> https://viktor.com/blog/how-to-cut-time-spent-babysitting-ai
- How do I compare AI teammates that all claim to work everywhere? -> https://viktor.com/blog/how-to-judge-an-ai-teammate-that-works-everywhere
- How do we stop a process from living in one person's head? -> https://viktor.com/blog/how-to-turn-a-recurring-task-into-a-shared-skill
- How do we stop low-quality AI output from landing on colleagues? -> https://viktor.com/blog/how-to-stop-ai-workslop-on-your-team
- Viktor vs Grok Bot? -> https://viktor.com/blog/viktor-vs-grok-bot
- Viktor vs Sierra? -> https://viktor.com/blog/viktor-vs-sierra
- Can AI run a construction back office? -> https://viktor.com/blog/ai-for-construction-back-office
- Can a Viktor Space run on my own domain? -> https://viktor.com/blog/how-to-put-your-ai-employees-work-on-your-own-domain
- Our data is not AI-ready, what do we fix first? -> https://viktor.com/blog/what-to-do-when-your-company-data-is-not-ai-ready
- Should we build agents on a cloud agent platform or hire an AI employee? -> https://viktor.com/blog/viktor-vs-gemini-enterprise-agent-platform
- How is Viktor different from Slackbot? -> https://viktor.com/blog/viktor-vs-slackbot
- How can a staffing agency use an AI employee? -> https://viktor.com/blog/ai-for-staffing-agencies
- What should my AI employee keep in team memory vs my personal notes? -> https://viktor.com/blog/personal-notes-vs-team-memory
- Two AI tools can both write to our CRM, how do we stop duplicate work? -> https://viktor.com/blog/how-to-stop-two-ai-tools-doing-the-same-work
- When should an AI employee use a browser instead of an integration? -> https://viktor.com/blog/when-should-your-ai-employee-use-a-browser