Models and APIs ยท by Moonshot AI
Kimi K3
Use Social Studio with Kimi K3
Kimi K3 is built for multi-step tool use, which suits this flow: ideas, import, draft, status. Use the Moonshot API with the tools as functions.
Kimi K3
Asks for ideas and drafts
Social tools
MCP or HTTP, one API key
You approve
Review link, then Publish
Your feeds
TikTok, Reels, Threads, Bluesky
The one rule
An agent prepares and a person publishes. Kimi K3 can create drafts, but it cannot publish to TikTok, and it cannot approve anything on your behalf. You open the review link, check the post and click Publish.
What Kimi K3 can do
Check the rules
Limits and approval rules for a network, before you make the video
social_get_requirementsGenerate ideas
Video ideas with hook, script, video prompt, caption and hashtags
social_generate_ideasImport a video
Host a video from a link in your own storage
social_import_videoUpload a file
Upload a video file directly
social_get_upload_urlCreate a draft
Create a post draft. TikTok drafts come with a review link for you
social_create_draftList your posts
Your posts and their status
social_list_postsTrack status
One post: processing, published (with link) or failed (with the reason)
social_get_post_status
Set it up
- 1
Create a Creative Tim API key
Create one here. It starts with
sk-ct-. Keep it in your client's secret settings, never in a prompt. - 2
- 3
Connect Kimi K3
Pick one. Function calling is the recommended way for Kimi K3.
Give Kimi K3 the tools as functions
RecommendedTypeScript// The model API is OpenAI-compatible; the tools are plain HTTP. import OpenAI from "openai" const llm = new OpenAI({ baseURL: "https://api.moonshot.ai/v1", apiKey: process.env.MOONSHOT_API_KEY }) const spec = await (await fetch("https://www.creative-tim.com/ui/api/social/openapi.json")).json() // Each OpenAPI operation becomes one function the model can call. const tools = Object.entries(spec.paths).map(([path, op]: [string, any]) => ({ type: "function" as const, function: { name: op.post.operationId, description: op.post.description, parameters: op.post.requestBody.content["application/json"].schema, }, })) const messages: any[] = [{ role: "user", content: "Make 3 TikTok ideas about home coffee, then draft the first one." }] for (;;) { const res = await llm.chat.completions.create({ model: "kimi-k3", messages, tools }) const msg = res.choices[0].message messages.push(msg) if (!msg.tool_calls?.length) break for (const call of msg.tool_calls) { const out = await fetch(`https://www.creative-tim.com/ui/api/social/tools/${call.function.name}`, { method: "POST", headers: { Authorization: `Bearer ${process.env.CREATIVE_TIM_API_KEY}`, "Content-Type": "application/json" }, body: call.function.arguments, }) messages.push({ role: "tool", tool_call_id: call.id, content: await out.text() }) } } console.log(messages.at(-1).content)- Keep your Creative Tim key in CREATIVE_TIM_API_KEY, never in the prompt.
- Return the whole assistant message (including its reasoning fields) to the model on the next turn, as the model's API requires.
Connect any MCP client
Option 2- 1In your agent's MCP or tools settings, add a remote server with the URL above.
- 2Send your key as a Bearer token in the Authorization header.
- 3If the client only supports local (stdio) servers, bridge it with: npx -y mcp-remote https://www.creative-tim.com/ui/api/mcp --header "Authorization:Bearer sk-ct-YOUR_KEY"
SettingsURL: https://www.creative-tim.com/ui/api/mcp Transport: Streamable HTTP (stateless, JSON responses) Authorization: Bearer sk-ct-YOUR_KEY
Try it
Paste this into Kimi K3 and fill in the blanks:
Use the Creative Tim social tools. First check the requirements for TikTok. Then give me 5 video ideas for <my niche>. For the one I pick, import this video <video URL>, and create a TikTok draft with the caption. Give me the review link.- Step 1
Kimi K3 tells you the draft is waiting and gives you a link.
- Step 2
Open it, review the post, publish.
- Step 3
Posts then show their status (processing, published with a link, or failed with TikTok's own reason) in the Social Studio.
Questions
Can Kimi K3 publish to TikTok for me?
No. Kimi K3 can create a draft with the video and caption and give you a review link. You open it, check the settings TikTok allows for your account, and click Publish. TikTok requires the creator to approve each post, so no agent can do it for you.
Which networks can Kimi K3 prepare posts for?
TikTok, Instagram Reels, Threads and Bluesky. For networks other than TikTok, your own copilot or autopilot setting decides whether a draft waits for your approval or is scheduled directly.
What does it cost?
Posting and drafting are free. Generating ideas or video in Creative Tim uses credits from your plan.
Where does my API key go?
In the client's secret or header settings, never in a prompt. You can create and revoke keys on the API Keys page at any time.
Other agents
DeepSeek
DeepSeek
Let a DeepSeek model draft social video posts using function calling.
Function calling~10 min setupSetup guideMuse
Meta
Use Social Studio from a Muse-based agent over MCP or plain HTTP.
HTTP / curl~5 min setupSetup guide