Slab logo

Slab AI employee

Viktor works in Slab for you. Ask in Slack or Microsoft Teams.

Viktor is an AI employee that connects to Slab and helps you capture, organize, and find team or personal notes, running 10 Slab actions for you like Get Posts, List Posts, and List Users. Ask in plain English from your workspace; Viktor does the work in Slab and reports back. Viktor connects with a scoped API key.

Free to start
No credit card
SOC 2 Type 1
Works in Slack & Microsoft Teams

What can your AI employee do in Slab?

Viktor connects to your Slab account and completes work in it. He doesn't just answer questions about Slab, he takes the actions on your behalf and delivers the finished result to your workspace.

Unlike workflow builders such as Zapier or Make, there is nothing to configure - no triggers to map, no workflows to maintain. You describe the outcome in plain English, and Viktor picks the right Slab actions, chains them with the other 9,800+ tools he connects to, and asks for approval before anything sensitive runs.

About Slab

Knowledge Base & Wiki Software

Use Slab from Slack and Microsoft Teams

Message Viktor in a Slack channel, a Microsoft Teams chat or a direct message. He opens Slab, does the work and posts the result in the same thread, so nobody has to switch tabs.

He can also run Slab work on a schedule, like a weekly Slab summary posted to your team's channel. Anything sensitive waits for your approval before it runs.

  1. You ask in your workspace

    Describe what you need in plain English

  2. Viktor picks the actions

    Selects from 10 Slab actions, chains them together

  3. Runs in Slab

    Helps you capture, organize, and find team or personal notes - your real data.

  4. Reports back

    Delivers the finished result to your workspace

Try asking Viktor

What can you ask Viktor to do in Slab?

Messages you'd actually send. Paste one into your workspace, swap in your specifics, and Viktor takes it from there.

  • “Find the Slab doc about onboarding and turn it into a checklist.”

    — you, to @Viktor

  • “Summarize what changed in Slab this week and post it here every Friday.”

    — you, to @Viktor

  • “Draft a new Slab page from this meeting transcript.”

    — you, to @Viktor

  • “Search Slab for anything about the renewal and pull out the key facts.”

    — you, to @Viktor

How it works

How does Viktor work with Slab?

Step 1: Connect your stack

27+ native integrations plus 9,800+ tools via managed connectors. Mostly one-click OAuth, a few API keys. No webhooks, no Zapier zaps.

Maya Patel11:32 AM
@Viktor check this week's Stripe revenue against HubSpot and flag anything off before the board call.
Viktor
Viktor11:33 AM
On it. Cross-checking Stripe against HubSpot and fixing anything that doesn't line up before your board call.

Step 2: Tell Viktor what you need

Message Viktor like a teammate: "Pull this week's MRR from Stripe." "Triage new Linear bugs." "Pause Meta ads over $40 CPA." Any tool.

Viktor
Viktor9:12 AM
📊 Revenue check:
$84,210 (+6.4% WoW).
3 deals didn't match HubSpot.
Fixed 2, one needs your call.

revenue_raport.pdf

4 pages·PDF

Step 3: Viktor does the work, you review

Viktor opens the tools, runs the work, and posts back exactly what changed. Sensitive actions wait for your approval. It’s all logged.

Actions

What can Viktor do in Slab?

Ask in plain English from your workspace. Viktor picks the right Slab actions, runs the work, and reports back. No workflows to build.

  • Other

    Add Topic To Post

    Associate a topic with a post via the addTopicToPost GraphQL mutation, returning the topic. Run Search Posts to obtain the post ID and List Topics to obtain the topic ID before calling.

  • Post

    Create Post

    Create a new post in Slab via the createPost GraphQL mutation, returning the full post object (e.g. {\"id\":\"abc123\",\"title\":\"Q3 Onboarding Guide\",\"topics\":[{\"id\":\"abc12def\",\"name\":\"Engineering\"}]}). If Content is provided, the body is appended after creation via the updatePostContent mutation (the Slab schema does not accept content at creation time). Slab derives the displayed title from the first line of the post's content, so the appended text is inserted after the existing title line rather than replacing it — this preserves Title instead of overwriting it. NOTE: the returned content field reflects the pre-append snapshot (title line only) even though the append is applied — treat a non-error response as confirmation, not the returned content. New posts are published by default (set Published to false to leave it as an unpublished draft) — unpublished posts do not appear in Search Posts/List Posts results. Run List Topics to obtain a Topic ID to pass at creation.

  • Posts

    Get Posts

    Get one or more Slab posts by their IDs, returning full post objects including content, owner, and associated topics. Use Search Posts first to discover post IDs; this action does not list or search. Accepts up to 100 IDs per call.

  • Posts

    List Posts

    List all posts in the Slab organization (no filter). This action is superseded by Search Posts, which accepts an optional Query string and can list all posts when Query is empty. Prefer Search Posts for new workflows. Returns { posts, pageInfo } — posts is an array of post objects (e.g. {\"id\": \"abc123\", \"title\": \"Engineering Onboarding Guide\", \"owner\": {\"id\": \"u1\", \"name\": \"Alice\"}, \"topics\": [{\"id\": \"abc12def\", \"name\": \"Engineering\"}]}). Only forward pagination is supported: when pageInfo.hasNextPage is true, pass pageInfo.endCursor as After to retrieve the next page. Pass Fields (e.g. [\"id\",\"title\",\"owner\"]) to trim large fields like content from each post when only metadata is needed.

  • Other

    List Topics

    List all topics in the Slab organization via the organization { topics } GraphQL query, returning an array of topic objects with id and name (e.g. [{\"id\":\"abc12def\",\"name\":\"Engineering\"}]). This is the picker action agents should call to obtain topic IDs for Create Post, Add Topic To Post, and Remove Topic From Post. There is no root topics-listing query, so this reads the organization's topics field.

  • Other

    List Users

    List all users in the Slab organization via the organization { users } GraphQL query, returning an array of user objects with id, name, and email (e.g. [{\"id\":\"u1\",\"name\":\"Alice\",\"email\":\"alice@example.com\"}]). This is the picker action agents should call to obtain a user ID for Update Post's Owner ID.

  • Other

    Remove Topic From Post

    Disassociate a topic from a post via the removeTopicFromPost GraphQL mutation, returning the topic. This only removes the association (reversible with Add Topic To Post); it does not delete the post or the topic. Run Search Posts for the post ID and List Topics for the topic ID before calling.

  • Posts

    Search Posts

    List or search posts in the Slab organization via the GraphQL search endpoint. Leave Query empty to list all posts; provide a Query string to full-text search. This is the picker action agents should call to obtain post IDs for Get Posts, Update Post, Add Topic To Post, and Remove Topic From Post. Returns { posts, pageInfo } — posts is an array of post objects (e.g. {\"id\": \"abc123\", \"title\": \"Engineering Onboarding Guide\", \"owner\": {\"id\": \"u1\", \"name\": \"Alice\"}, \"topics\": [{\"id\": \"abc12def\", \"name\": \"Engineering\"}]}). Only forward pagination is supported: when pageInfo.hasNextPage is true, pass pageInfo.endCursor as After to retrieve the next page. Pass Fields (e.g. [\"id\",\"title\",\"owner\"]) to trim large fields like content from each post when only metadata is needed.

  • Other

    Update Post Content

    Replace or edit a post's body via the updatePostContent GraphQL mutation. Content must be supplied as a Quill delta (see wrapped in an {\"ops\":[...]} object, passed as a JSON string — the API rejects a native/unwrapped delta object at the GraphQL layer. IMPORTANT: Slab derives the post's displayed title from the first line of its content — there is no independent title field after creation. An op with {\"retain\":0} (or no leading retain) inserts at the very start WITHOUT deleting anything — it pushes the existing content later in the document, so it can change what displays as the title without removing the old title text (which still exists, just no longer on the first line). To actually replace the title, delete the existing title's range — {\"delete\":N} where N is the old title line's length — then insert the replacement. To append body text while preserving the title, first read the post's current content (via Search Posts or Get Posts) and lead with a retain count covering the existing title line's length. This is a distinct endpoint from Update Post (which handles metadata/access only, and cannot change title). Run Search Posts first to obtain the post ID. Example (append after a 20-character title line): postId abc123, delta {\"ops\":[{\"retain\":20},{\"insert\":\"Additional body text.\\n\"}]} — a non-error response confirms the edit was accepted. CRITICAL: this mutation applies your delta positionally against whatever the post's content actually is at the moment the call runs — there is no version check, and the response reflects the pre-edit snapshot, not the result. Always re-read the post's current content (Search Posts or Get Posts) immediately before computing a delta, and if you need to make a second edit to the same post, re-read again first — never compute a new delta from an earlier read or from this action's own response. Offsets computed against a stale snapshot land in the wrong place and silently corrupt the document instead of erroring; they do not queue safely.

Works with your stack

Viktor uses Slab together with your other tools

Ask for outcomes that span tools - Viktor pulls from Slab, cross-references the rest of your stack, and delivers one finished result.

Trusted by 72,000+ teams

The moment Viktor becomes part of the team.

Infrastructure for a $1M/yr agency built in 9 days
“I discovered Viktor 9 days ago, and I have already built the infrastructure for a $1,000,000 a year content agency with zero staff.”
Troy Dean

Troy Dean

Founder, Agency Mavericks

Saved:1 FTE/1 full time employee
“Literally a game-changer for me, like adding another employee (or two).”
Krysta Mueggenburg

Krysta Mueggenburg

Owner, Element Turf & Outdoor Solutions

Saved:10+ hrs/week
“Claude Tag writes better specs. Viktor executes faster across tools. Viktor actually goes and creates the tickets.”
Toni Lopez

Toni Lopez

Co-founder, Karumi (YC F25)

Slab integration FAQ

Yes. Slab is one of the 9,800+ tools Viktor connects to, via a managed connector. Once connected, anyone on your team can put Viktor to work in Slab from their workspace - no workflow builder, no code.

4.9 on G2G2 rating: 4.9 out of 5 stars

Start free. Viktor delivers.

Start for free today. No credit card required.

Get Started for Free