Get started
Quickstart
Get a real post live in minutes. PostLake is built agent-first, so the fastest path is to hand it to your AI assistant, but posting by hand or calling the API from your own code are here too. Pick your path:
Connect PostLake's hosted MCP server to your AI assistant, then just ask it to post. There's no API key to paste. The connection uses OAuth and signs you in through your browser.
https://api.postlake.dev/mcpPick your host for the exact steps:
Claude Code
Add the server with one command, then approve the browser page that opens:
claude mcp add --transport http postlake https://api.postlake.dev/mcpStart a fresh session and run /mcp, postlake should show as connected. Then just ask: “Post ‘hello world’ to my Bluesky.”
Claude Desktop
Open Settings → Connectors → Add custom connector, paste the server URL above, and approve the browser sign-in. PostLake's tools then appear in any chat.
Cursor
Open Settings → Tools & MCP → New MCP server (this opens mcp.json), merge this in, and save:
{
"mcpServers": {
"postlake": { "url": "https://api.postlake.dev/mcp" }
}
}Then find PostLake under Settings → Tools & MCP, connect it, and approve the browser sign-in.
ChatGPT
In ChatGPT's developer mode / custom connectors, add a new MCP server pointing at the URL above, then approve the sign-in.
Gemini CLI
gemini mcp add postlake https://api.postlake.dev/mcpThen approve the browser page to authorize.
VS Code · GitHub Copilot
In Copilot Agent mode → MCP servers → Add, point it at the URL above and sign in.
Any other MCP host
Most hosts have an “add MCP server” action. Point it at https://api.postlake.dev/mcp with no Authorization header. It uses OAuth, so the host opens your browser to sign you in.
Post by hand from the PostLake dashboard, no code at all. Good for a quick check that everything works.
1. Create your account
- Go to app.postlake.dev and sign up with email, Google or GitHub. Verify your email to unlock your free credits.
- You land on your Dashboard. The top menu, Channels, Create, Posts, Analytics, is where everything lives.
2. Connect a social account
- Open Channels and make a profile: a named folder for accounts that belong together (a brand, a client, or just “me”). Type a name like
my-brandand add it. - Under that profile, click Connect an account and pick a network. Bluesky is easiest: it needs no approval and connects in seconds.
3. Publish
- Open Create, tick the account you connected, type a message, and click Publish.
- Open that network in another tab. Your post is really there. That's the whole product in one screen.
Post from your own code in a few steps: get a key, then send a post. (Connect a social account first, see the No code tab.)
1. Get an API key
Sign up at app.postlake.dev, then open your account menu → API Keys → Create API key. It shows once, starting sk_live_…. Copy it somewhere safe. Treat it like a password.
2. Post your first message
Swap in your key and a connected profile name. One call publishes to every account under that profile:
# Replace YOUR_API_KEY and the profile name first
curl -X POST https://api.postlake.dev/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello from the PostLake API 👋",
"profile": "my-brand"
}'import requests
# One call publishes to every account under the profile
res = requests.post(
"https://api.postlake.dev/v1/posts",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"text": "Hello from the PostLake API 👋",
"profile": "my-brand", # the profile name from your dashboard
},
)
print(res.json())// One call publishes to every account under the profile
const res = await fetch("https://api.postlake.dev/v1/posts", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Hello from the PostLake API 👋",
profile: "my-brand", // the profile name from your dashboard
}),
});
console.log(await res.json());3. Read the response
You get back the same shape for every network: one post id, plus a targets list with one entry per account and its live URL:
{
"id": "post_a1b2c3",
"state": "published",
"targets": [
{ "platform": "bluesky", "state": "published", "url": "https://bsky.app/…" }
]
}What's next
- Schedule a post for later instead of publishing now.
- Check what each platform supports before you post to it.
- Add images or video to a post.
- Browse every endpoint in the API reference.