← Back to Search & Research
Search & Research by @ide-rea

deepresearch-conversation

Deep ReSearch Conversation is provided

0
Source Code

Deep Research Conversation

This skill allows OpenClaw agents to conduct in-depth research discussions with users on a given topic. The API Key is automatically loaded from the OpenClaw config — no manual setup is needed.

API Table

name path description
DeepresearchConversation /v2/agent/deepresearch/run Multi-round streaming deep research conversation (via Python script)
ConversationCreate /v2/agent/deepresearch/create Create a new conversation session, returns conversation_id
FileUpload /v2/agent/file/upload Upload a file for the conversation
FileParseSubmit /v2/agent/file/parse/submit Submit an uploaded file for parsing
FileParseQuery /v2/agent/file/parse/query Query the status of a file parsing task

Workflow

Path A: Topic discussion without files

  1. Call DeepresearchConversation directly with the user's query. A new conversation is created automatically.

Path B: Topic discussion with files

  1. Call ConversationCreate to get a conversation_id.
  2. Call FileUpload with the conversation_id to upload files.
  3. Call FileParseSubmit with the returned file_id.
  4. Poll FileParseQuery every few seconds until parsing succeeds.
  5. Call DeepresearchConversation with the query, conversation_id, and file_ids.

Multi-round conversation rules

  • The DeepresearchConversation API is a SSE streaming interface that returns data incrementally.
  • After the first call, you must pass conversation_id in all subsequent calls.
  • If the response contains an interrupt_id (for "demand clarification" or "outline confirmation"), the next call must include that interrupt_id.
  • If the response contains a structured_outline, present it to the user for confirmation/modification, then pass the final outline in the next call.
  • Keep calling DeepresearchConversation iteratively until the user is satisfied with the result.

APIS

ConversationCreate API

Parameters

no parameters

Execute shell

curl -X POST "https://qianfan.baidubce.com/v2/agent/deepresearch/create" \
  -H "X-Appbuilder-From: openclaw" \
  -H "Authorization: Bearer $BAIDU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

FileUpload API

Parameters

  • agent_code: Fixed value "deepresearch" (required)
  • conversation_id: From ConversationCreate response (required)
  • file: Local file binary (mutually exclusive with file_url). Max 10 files. Supported formats:
    • Text: .doc, .docx, .txt, .pdf, .ppt, .pptx (txt ≤ 10MB, pdf ≤ 100MB/3000 pages, doc/docx ≤ 100MB/2500 pages, ppt/pptx ≤ 400 pages)
    • Table: .xlsx, .xls (≤ 100MB, single Sheet only)
    • Image: .png, .jpg, .jpeg, .bmp (≤ 10MB each)
    • Audio: .wav, .pcm (≤ 10MB)
  • file_url: Public URL of the file (mutually exclusive with file)

Local file upload

curl -X POST "https://qianfan.baidubce.com/v2/agent/file/upload" \
  -H "Authorization: Bearer $BAIDU_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -H "X-Appbuilder-From: openclaw" \
  -F "agent_code=deepresearch" \
  -F "conversation_id=$conversation_id" \
  -F "file=@local_file_path"

File URL upload

curl -X POST "https://qianfan.baidubce.com/v2/agent/file/upload" \
  -H "Authorization: Bearer $BAIDU_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -H "X-Appbuilder-From: openclaw" \
  -F "agent_code=deepresearch" \
  -F "conversation_id=$conversation_id" \
  -F "file_url=$file_url"

FileParseSubmit API

Parameters

  • file_id: From FileUpload response (required)

Execute shell

curl -X POST "https://qianfan.baidubce.com/v2/agent/file/parse/submit" \
  -H "Authorization: Bearer $BAIDU_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Appbuilder-From: openclaw" \
  -d '{"file_id": "$file_id"}'

FileParseQuery API

Parameters

  • task_id: From FileParseSubmit response (required)

Execute shell

curl -X GET "https://qianfan.baidubce.com/v2/agent/file/parse/query?task_id=$task_id" \
  -H "Authorization: Bearer $BAIDU_API_KEY" \
  -H "X-Appbuilder-From: openclaw"

DeepresearchConversation API

Parameters

  • query: The user's question or research topic (required)
  • conversation_id: Optional on first call (auto-generated). Required on subsequent calls.
  • file_ids: List of parsed file IDs (optional, only when discussing files)
  • interrupt_id: Required when responding to "demand clarification" or "outline confirmation" from previous round. Found in content.text.data of the previous SSE response.
  • structured_outline: The research report outline. Required on subsequent calls if the previous round generated one. Structure:
{
    "title": "string",
    "locale": "string",
    "description": "string",
    "sub_chapters": [
        {
            "title": "string",
            "locale": "string",
            "description": "string",
            "sub_chapters": []
        }
    ]
}
  • version: "Lite" (faster, within 10 min) or "Standard" (deeper, slower). Default: "Standard".

Execute shell

python3 scripts/deepresearch_conversation.py '{"query": "your question here", "version": "Standard"}'

Example with all parameters

python3 scripts/deepresearch_conversation.py '{"query": "the question", "file_ids": ["file_id_1"], "interrupt_id": "interrupt_id", "conversation_id": "conversation_id", "structured_outline": {"title": "Report Title", "locale": "zh", "description": "desc", "sub_chapters": [{"title": "Chapter 1", "locale": "zh", "description": "chapter desc", "sub_chapters": []}]}, "version": "Standard"}'