Save clips from any agent
Send one note at a time or stream useful answers into Thinkly as clips.
Agent API v1
Send notes, links, markdown, and projects into Thinkly with one API key. Use the same API to turn saved context into pages and reusable drafts.
curl https://thinkly.pluglab.ai/api/agent/clips \
-X POST \
-H 'Authorization: Bearer tk_your_api_key' \
-H 'Idempotency-Key: clip-001' \
-H 'Content-Type: application/json' \
-d '{
"title": "Weekly insight",
"text": "Save the final answer from today’s research run."
}'Send one note at a time or stream useful answers into Thinkly as clips.
Group related items into one capture and keep them reusable later.
Turn saved context into pages first, then generate a draft when the page is ready.
Open a project in Thinkly from your agent, then keep organizing work inside the product.
Sign in to Thinkly and create a scoped API key in Settings → API keys.
Send the key as Bearer auth in every request, and add an Idempotency-Key on write requests.
Start with one clip or one ingest batch, then move into pages, draft generation, uploads, and projects.
Thinkly Agent API v1 uses personal API keys. You can create scoped keys for specific integrations and keep them server-side as Bearer tokens.
curl https://thinkly.pluglab.ai/api/agent/clips \
-X POST \
-H 'Authorization: Bearer tk_your_api_key' \
-H 'Idempotency-Key: clip-001' \
-H 'Content-Type: application/json' \
-d '{
"title": "Weekly insight",
"text": "Save the final answer from today’s research run."
}'Agent API requests use the same plan limits as the product. Credits are enforced on AI-backed actions instead of a separate agent-only quota.
Write endpoints support Idempotency-Key. Re-sending the same request with the same key returns the stored result. Reusing the same key with a different body returns 409.
curl https://thinkly.pluglab.ai/api/agent/projects \
-X POST \
-H 'Authorization: Bearer tk_your_api_key' \
-H 'Idempotency-Key: project-2026-04-launch' \
-H 'Content-Type: application/json' \
-d '{
"name": "April launch plan",
"template": "goal_milestones"
}'/api/agent/clipsUse this for a single note, link, or saved answer.
{
"title": "Saved answer",
"text": "This is the final summary worth keeping.",
"tags": ["research", "launch"]
}/api/agent/ingestSend text, URLs, and markdown together and keep them grouped in one capture.
{
"items": [
{ "type": "url", "url": "https://example.com/article" },
{ "type": "markdown", "title": "Notes", "text": "# Key points\n- One\n- Two" }
]
}/api/agent/uploadSend multipart uploads through the same Agent API surface when your agent needs to attach files.
curl https://thinkly.pluglab.ai/api/agent/upload \
-H 'Authorization: Bearer tk_your_api_key' \
-H 'Idempotency-Key: upload-001' \
-F 'file=@notes.md'/api/agent/pages/:id/generateUse page generation when your saved clips have already been organized into a page.
{
"mode": "custom",
"prompt": "Turn this page into a short publishable brief."
}/api/agent/projectsOpen a new Thinkly project from your agent workflow with a name, template, and status.
{
"name": "April launch plan",
"template": "goal_milestones",
"icon": "🚀"
}/api/agent/projects/:id/itemsPlace a clip, page, draft, or published item into a Thinkly project stage from your agent workflow.
{
"stage": "clip",
"referenceId": "clip_123"
}Agent API v1 returns a normalized envelope so your integration can handle success and failure consistently.
{
"success": true,
"data": {
"id": "clip_123",
"title": "Saved answer"
},
"error": null
}Use the ready-made OpenClaw flow if you want commands, setup steps, and a working integration without writing your own API client first.
Open OpenClaw guideUse Thinkly Agent API v1 when Hermes or your own agent should save clips, ingest batches, create pages, and open projects directly.
See landing overviewOpen each endpoint to see a request body, response example, and integration notes.
/api/agent/clipsCreate one clip{
"title": "Saved answer",
"text": "This is the final summary worth keeping.",
"tags": ["research", "launch"]
}{
"success": true,
"data": {
"id": "clip_123",
"title": "Saved answer",
"text": "This is the final summary worth keeping."
},
"error": null
}/api/agent/ingestIngest a batch{
"items": [
{ "type": "url", "url": "https://example.com/article" },
{ "type": "markdown", "title": "Notes", "text": "# Key points\n- One\n- Two" }
]
}{
"success": true,
"data": {
"captureBatchId": "batch_123",
"created": [
{ "id": "clip_1", "title": "https://example.com/article", "url": "https://example.com/article" },
{ "id": "clip_2", "title": "Notes", "url": null }
],
"failed": []
},
"error": null
}/api/agent/uploadUpload files through the agent facadecurl https://thinkly.pluglab.ai/api/agent/upload \
-H 'Authorization: Bearer tk_your_api_key' \
-H 'Idempotency-Key: upload-001' \
-F 'file=@notes.md'{
"success": true,
"data": {
"id": "clip_upload_123",
"title": "notes.md"
},
"error": null
}/api/agent/pages/:id/generateGenerate a draft from a page{
"mode": "custom",
"prompt": "Turn this page into a short publishable brief."
}{
"success": true,
"data": {
"jobId": "draft_123",
"type": "page_generation",
"status": "completed",
"result": {
"draftId": "draft_123"
}
},
"error": null
}/api/agent/projectsCreate a project{
"name": "April launch plan",
"template": "goal_milestones",
"icon": "🚀"
}{
"success": true,
"data": {
"id": "project_123",
"name": "April launch plan",
"template": "goal_milestones"
},
"error": null
}/api/agent/projects/:id/itemsAdd an item to a project stage{
"stage": "clip",
"referenceId": "clip_123"
}{
"success": true,
"data": {
"id": "project_item_123",
"stage": "clip",
"referenceId": "clip_123"
},
"error": null
}The best first integration is simple: save one useful answer, one link, or one markdown note. Once that works, turn it into pages and drafts inside Thinkly.