{
  "schemaVersion": "1.0",
  "item": {
    "slug": "jules-api",
    "name": "Jules API",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/arthbhalodiya/jules-api",
    "canonicalUrl": "https://clawhub.ai/arthbhalodiya/jules-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/jules-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/jules.sh",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "jules-api",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T14:55:24.623Z",
      "expiresAt": "2026-05-11T14:55:24.623Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-api",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-api",
        "contentDisposition": "attachment; filename=\"jules-api-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "jules-api"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/jules-api"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/jules-api",
    "agentPageUrl": "https://openagent3.xyz/skills/jules-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jules-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jules-api/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Jules API Skill",
        "body": "Interact with the Google Jules AI coding agent via its REST API. Jules can autonomously execute coding tasks on your GitHub repositories — writing code, fixing bugs, adding tests, and creating pull requests.\n\nBase URL: https://jules.googleapis.com/v1alpha\nAuth: Pass your API key via the x-goog-api-key header. Get one at jules.google.com/settings."
      },
      {
        "title": "List Sources (Connected Repositories)",
        "body": "Discover which GitHub repos are connected to your Jules account:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?pageSize=30\"\n\nWith pagination:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?pageSize=10&pageToken=PAGE_TOKEN\"\n\nFilter specific sources:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?filter=name%3Dsources%2Fgithub-owner-repo\""
      },
      {
        "title": "Get a Source",
        "body": "Get details and branches for a specific repo:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources/SOURCE_ID\"\n\nExample: sources/github-myorg-myrepo — replace with your actual source ID from List Sources."
      },
      {
        "title": "Create a Session (Start a Coding Task)",
        "body": "Create a new Jules session to execute a coding task on a repo:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"TASK_DESCRIPTION\",\n    \"title\": \"OPTIONAL_TITLE\",\n    \"sourceContext\": {\n      \"source\": \"sources/github-OWNER-REPO\",\n      \"githubRepoContext\": {\n        \"startingBranch\": \"main\"\n      }\n    },\n    \"requirePlanApproval\": true\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions\""
      },
      {
        "title": "Parameters",
        "body": "ParameterRequiredDescriptionpromptYesThe task description for Jules to executetitleNoOptional title (auto-generated if omitted)sourceContext.sourceYesSource resource name (e.g. sources/github-owner-repo)sourceContext.githubRepoContext.startingBranchYesBranch to start from (e.g. main, develop)requirePlanApprovalNoIf true, plans need explicit approval before executionautomationModeNoSet to AUTO_CREATE_PR to auto-create PRs when done"
      },
      {
        "title": "Auto-approve + Auto-PR example",
        "body": "curl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"Add comprehensive unit tests for the auth module\",\n    \"sourceContext\": {\n      \"source\": \"sources/github-myorg-myrepo\",\n      \"githubRepoContext\": { \"startingBranch\": \"main\" }\n    },\n    \"automationMode\": \"AUTO_CREATE_PR\"\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions\""
      },
      {
        "title": "List Sessions",
        "body": "List all your Jules sessions:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10\"\n\nPaginate with pageToken:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10&pageToken=NEXT_PAGE_TOKEN\""
      },
      {
        "title": "Get a Session",
        "body": "Retrieve a single session by ID (includes outputs like PRs if completed):\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\""
      },
      {
        "title": "Session States",
        "body": "StateMeaningQUEUEDWaiting to be processedPLANNINGJules is analyzing and creating a planAWAITING_PLAN_APPROVALPlan ready, waiting for user approvalAWAITING_USER_FEEDBACKJules needs additional inputIN_PROGRESSJules is actively workingPAUSEDSession is pausedCOMPLETEDTask completed successfullyFAILEDTask failed to complete"
      },
      {
        "title": "Approve a Plan",
        "body": "When a session is in AWAITING_PLAN_APPROVAL state, approve the plan:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID:approvePlan\""
      },
      {
        "title": "Send a Message",
        "body": "Send feedback, answer questions, or give additional instructions to an active session:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"YOUR_MESSAGE_HERE\"\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID:sendMessage\"\n\nUse this when session state is AWAITING_USER_FEEDBACK or to provide additional guidance during IN_PROGRESS."
      },
      {
        "title": "List Activities (Monitor Progress)",
        "body": "Get all events/progress for a session:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities?pageSize=50\"\n\nGet activities after a specific timestamp (for polling):\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities?createTime=2026-01-17T00:03:53Z\""
      },
      {
        "title": "Activity Types",
        "body": "Activities will contain exactly one of these event fields:\n\nEventDescriptionplanGeneratedJules created a plan (contains plan.steps[])planApprovedA plan was approveduserMessagedUser sent a messageagentMessagedJules sent a messageprogressUpdatedStatus update during executionsessionCompletedSession finished successfullysessionFailedSession encountered an error (contains reason)"
      },
      {
        "title": "Artifacts",
        "body": "Activities may include artifacts:\n\nChangeSet: Code changes with gitPatch (unified diff, base commit, suggested commit message)\nBashOutput: Command output with command, output, exitCode\nMedia: Binary output with mimeType and base64 data"
      },
      {
        "title": "Get a Single Activity",
        "body": "curl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities/ACTIVITY_ID\""
      },
      {
        "title": "Delete a Session",
        "body": "curl -s -X DELETE \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\""
      },
      {
        "title": "Typical Workflow",
        "body": "List sources to find the repo resource name\nCreate a session with a prompt describing the task\nPoll the session (Get Session) to track state changes\nList activities to monitor progress and read Jules' messages\nIf requirePlanApproval was set, approve the plan when state is AWAITING_PLAN_APPROVAL\nIf state is AWAITING_USER_FEEDBACK, send a message with your response\nWhen COMPLETED, get the session to find the output PR URL"
      },
      {
        "title": "Error Handling",
        "body": "CodeMeaning200Success400Bad request (invalid parameters)401Unauthorized (invalid/missing API key)403Forbidden (insufficient permissions)404Not found429Rate limited500Server error\n\nError responses return:\n\n{\n  \"error\": {\n    \"code\": 400,\n    \"message\": \"Invalid session ID format\",\n    \"status\": \"INVALID_ARGUMENT\"\n  }\n}"
      },
      {
        "title": "Notes",
        "body": "Get your API key from jules.google.com/settings\nStore it as the JULES_API_KEY environment variable\nSources (repos) are connected via the Jules web UI at jules.google — the API is read-only for sources\nSession resource names follow the pattern sessions/{sessionId}\nActivity resource names follow sessions/{sessionId}/activities/{activityId}\nAll list endpoints support pageSize (1-100) and pageToken for pagination"
      }
    ],
    "body": "Jules API Skill\n\nInteract with the Google Jules AI coding agent via its REST API. Jules can autonomously execute coding tasks on your GitHub repositories — writing code, fixing bugs, adding tests, and creating pull requests.\n\nBase URL: https://jules.googleapis.com/v1alpha Auth: Pass your API key via the x-goog-api-key header. Get one at jules.google.com/settings.\n\nList Sources (Connected Repositories)\n\nDiscover which GitHub repos are connected to your Jules account:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?pageSize=30\"\n\n\nWith pagination:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?pageSize=10&pageToken=PAGE_TOKEN\"\n\n\nFilter specific sources:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources?filter=name%3Dsources%2Fgithub-owner-repo\"\n\nGet a Source\n\nGet details and branches for a specific repo:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sources/SOURCE_ID\"\n\n\nExample: sources/github-myorg-myrepo — replace with your actual source ID from List Sources.\n\nCreate a Session (Start a Coding Task)\n\nCreate a new Jules session to execute a coding task on a repo:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"TASK_DESCRIPTION\",\n    \"title\": \"OPTIONAL_TITLE\",\n    \"sourceContext\": {\n      \"source\": \"sources/github-OWNER-REPO\",\n      \"githubRepoContext\": {\n        \"startingBranch\": \"main\"\n      }\n    },\n    \"requirePlanApproval\": true\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions\"\n\nParameters\nParameter\tRequired\tDescription\nprompt\tYes\tThe task description for Jules to execute\ntitle\tNo\tOptional title (auto-generated if omitted)\nsourceContext.source\tYes\tSource resource name (e.g. sources/github-owner-repo)\nsourceContext.githubRepoContext.startingBranch\tYes\tBranch to start from (e.g. main, develop)\nrequirePlanApproval\tNo\tIf true, plans need explicit approval before execution\nautomationMode\tNo\tSet to AUTO_CREATE_PR to auto-create PRs when done\nAuto-approve + Auto-PR example\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"Add comprehensive unit tests for the auth module\",\n    \"sourceContext\": {\n      \"source\": \"sources/github-myorg-myrepo\",\n      \"githubRepoContext\": { \"startingBranch\": \"main\" }\n    },\n    \"automationMode\": \"AUTO_CREATE_PR\"\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions\"\n\nList Sessions\n\nList all your Jules sessions:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10\"\n\n\nPaginate with pageToken:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions?pageSize=10&pageToken=NEXT_PAGE_TOKEN\"\n\nGet a Session\n\nRetrieve a single session by ID (includes outputs like PRs if completed):\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\"\n\nSession States\nState\tMeaning\nQUEUED\tWaiting to be processed\nPLANNING\tJules is analyzing and creating a plan\nAWAITING_PLAN_APPROVAL\tPlan ready, waiting for user approval\nAWAITING_USER_FEEDBACK\tJules needs additional input\nIN_PROGRESS\tJules is actively working\nPAUSED\tSession is paused\nCOMPLETED\tTask completed successfully\nFAILED\tTask failed to complete\nApprove a Plan\n\nWhen a session is in AWAITING_PLAN_APPROVAL state, approve the plan:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}' \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID:approvePlan\"\n\nSend a Message\n\nSend feedback, answer questions, or give additional instructions to an active session:\n\ncurl -s -X POST \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"prompt\": \"YOUR_MESSAGE_HERE\"\n  }' \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID:sendMessage\"\n\n\nUse this when session state is AWAITING_USER_FEEDBACK or to provide additional guidance during IN_PROGRESS.\n\nList Activities (Monitor Progress)\n\nGet all events/progress for a session:\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities?pageSize=50\"\n\n\nGet activities after a specific timestamp (for polling):\n\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities?createTime=2026-01-17T00:03:53Z\"\n\nActivity Types\n\nActivities will contain exactly one of these event fields:\n\nEvent\tDescription\nplanGenerated\tJules created a plan (contains plan.steps[])\nplanApproved\tA plan was approved\nuserMessaged\tUser sent a message\nagentMessaged\tJules sent a message\nprogressUpdated\tStatus update during execution\nsessionCompleted\tSession finished successfully\nsessionFailed\tSession encountered an error (contains reason)\nArtifacts\n\nActivities may include artifacts:\n\nChangeSet: Code changes with gitPatch (unified diff, base commit, suggested commit message)\nBashOutput: Command output with command, output, exitCode\nMedia: Binary output with mimeType and base64 data\nGet a Single Activity\ncurl -s -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID/activities/ACTIVITY_ID\"\n\nDelete a Session\ncurl -s -X DELETE \\\n  -H \"x-goog-api-key: $JULES_API_KEY\" \\\n  \"https://jules.googleapis.com/v1alpha/sessions/SESSION_ID\"\n\nTypical Workflow\nList sources to find the repo resource name\nCreate a session with a prompt describing the task\nPoll the session (Get Session) to track state changes\nList activities to monitor progress and read Jules' messages\nIf requirePlanApproval was set, approve the plan when state is AWAITING_PLAN_APPROVAL\nIf state is AWAITING_USER_FEEDBACK, send a message with your response\nWhen COMPLETED, get the session to find the output PR URL\nError Handling\nCode\tMeaning\n200\tSuccess\n400\tBad request (invalid parameters)\n401\tUnauthorized (invalid/missing API key)\n403\tForbidden (insufficient permissions)\n404\tNot found\n429\tRate limited\n500\tServer error\n\nError responses return:\n\n{\n  \"error\": {\n    \"code\": 400,\n    \"message\": \"Invalid session ID format\",\n    \"status\": \"INVALID_ARGUMENT\"\n  }\n}\n\nNotes\nGet your API key from jules.google.com/settings\nStore it as the JULES_API_KEY environment variable\nSources (repos) are connected via the Jules web UI at jules.google — the API is read-only for sources\nSession resource names follow the pattern sessions/{sessionId}\nActivity resource names follow sessions/{sessionId}/activities/{activityId}\nAll list endpoints support pageSize (1-100) and pageToken for pagination"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/arthbhalodiya/jules-api",
    "publisherUrl": "https://clawhub.ai/arthbhalodiya/jules-api",
    "owner": "arthbhalodiya",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/jules-api",
    "downloadUrl": "https://openagent3.xyz/downloads/jules-api",
    "agentUrl": "https://openagent3.xyz/skills/jules-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jules-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jules-api/agent.md"
  }
}