| name | godaddy-cli |
| description | Use the GoDaddy CLI (godaddy) to manage applications, authentication, environments, deployments, extensions, and webhooks on the GoDaddy Developer Platform. Load this skill when a task involves running godaddy commands, parsing their JSON output, managing GoDaddy applications, deploying extensions, or interacting with the GoDaddy commerce APIs. |
| version | 1.0.0 |
| author | GoDaddy Commerce |
| tags | ["godaddy","cli","commerce","applications","deploy"] |
Using the GoDaddy CLI
The godaddy CLI is an agent-first tool. Every command returns a single JSON envelope to stdout. There is no plain text mode, no --json flag, and no table output. Parse stdout as JSON.
Quick Start
godaddy
godaddy auth login
godaddy auth status
godaddy env get
godaddy application list
godaddy application info <name>
Output Contract
Every response is JSON
Every command writes exactly one JSON object to stdout followed by a newline. Parse it directly. Debug/verbose messages go to stderr only.
Success
{
"ok": true,
"command": "godaddy application list",
"result": { ... },
"next_actions": [ ... ]
}
Error
{
"ok": false,
"command": "godaddy application info demo",
"error": {
"message": "Application 'demo' not found",
"code": "NOT_FOUND"
},
"fix": "Use discovery commands such as: godaddy application list or godaddy actions list.",
"next_actions": [ ... ]
}
Check ok first. On failure, read error.code for programmatic handling and fix for the suggested recovery step.
Error codes: NOT_FOUND, AUTH_REQUIRED, VALIDATION_ERROR, NETWORK_ERROR, CONFIG_ERROR, SECURITY_BLOCKED, COMMAND_NOT_FOUND, UNSUPPORTED_OPTION, UNEXPECTED_ERROR.
next_actions (HATEOAS)
Every response includes next_actions — an array of commands you can run next. These are contextual: they change based on what just happened.
{
"next_actions": [
{
"command": "godaddy application validate <name>",
"description": "Validate application configuration",
"params": {
"name": { "value": "wes-test-app-devs2", "required": true }
}
},
{
"command": "godaddy application release <name> --release-version <version>",
"description": "Create a release",
"params": {
"name": { "value": "wes-test-app-devs2", "required": true },
"version": { "required": true }
}
}
]
}
How to read next_actions:
- No
params: the command is literal — run it as-is.
params present: the command is a template. Fill <placeholders> with values.
params.*.value: pre-filled from context. Use this value unless you have a reason to override.
params.*.default: value to use if the param is omitted.
params.*.enum: valid choices for this param.
params.*.required: must be provided (corresponds to <positional> args).
Template syntax: <required> for positional args, [--flag <value>] for optional flags, [--flag] for optional booleans.
Truncated output
Large results are automatically truncated to protect context windows. When this happens:
{
"result": {
"events": [ ... ],
"total": 190,
"shown": 50,
"truncated": true,
"full_output": "/var/folders/.../godaddy-cli/1771947169904-webhook-events.json"
}
}
If truncated is true, the complete data is at the full_output file path. Read that file if you need everything.
Global Options
| Flag | Alias | Effect |
|---|
--pretty | | Pretty-print JSON with 2-space indentation |
--env <env> | -e | Override environment for this command (ote or prod) |
--verbose | -v | Log HTTP requests/responses to stderr |
--debug | -vv | Full verbose output to stderr |
These can appear anywhere in the command. They do not affect the JSON structure — only formatting and stderr diagnostics.
Discovery
Run any group command without a subcommand to get its command tree:
godaddy
godaddy application
godaddy application add
godaddy auth
godaddy env
godaddy actions
godaddy webhook
The root command (godaddy with no args) returns the complete command_tree, current environment, and authentication state — everything needed to decide what to do next.
Environments
Two environments: ote (test, default) and prod.
godaddy env get
godaddy env set prod
godaddy env list
godaddy env info ote
godaddy --env prod app list
The active environment determines which API endpoint and config file are used.
Authentication
OAuth 2.0 PKCE flow. Opens a browser for login. Tokens are stored in the OS keychain.
godaddy auth login
godaddy auth login --scope commerce.orders:read
godaddy auth status
godaddy auth logout
If a command fails with AUTH_REQUIRED, run godaddy auth login and retry.
The godaddy api command supports automatic re-auth: if a request returns 403 and --scope was provided, it re-authenticates with the requested scope and retries once.
Commands
Application Lifecycle
godaddy application list
godaddy application info <name>
godaddy application validate <name>
godaddy application init \
--name my-app \
--description "My application" \
--url https://my-app.example.com \
--proxy-url https://my-app.example.com/api \
--scopes "apps.app-registry:read apps.app-registry:write"
godaddy application update <name> --label "New Label"
godaddy application update <name> --status INACTIVE
godaddy application update <name> --description "Updated description"
godaddy application enable <name> --store-id <storeId>
godaddy application disable <name> --store-id <storeId>
godaddy application archive <name>
Configuration (godaddy.toml)
Add actions, subscriptions, and extensions to the config file:
godaddy application add action --name my-action --url /actions/handler
godaddy application add subscription \
--name order-events \
--events "commerce.order.created,commerce.order.updated" \
--url /webhooks/orders
godaddy application add extension embed \
--name my-widget \
--handle my-widget-ext \
--source src/extensions/widget/index.tsx \
--target admin.product.detail
godaddy application add extension checkout \
--name my-checkout \
--handle my-checkout-ext \
--source src/extensions/checkout/index.tsx \
--target checkout.cart.summary
godaddy application add extension blocks --source src/extensions/blocks/index.tsx
All add commands accept --config <path> and --environment <env> to target a specific config file.
Release and Deploy
godaddy application release <name> --release-version 1.0.0
godaddy application release <name> --release-version 1.0.0 --description "Initial release"
godaddy application deploy <name>
godaddy application deploy <name> --follow
Release and deploy accept --config <path> and --environment <env>.
API Discovery and Requests
Use godaddy api for endpoint discovery and authenticated API calls:
godaddy api list
godaddy api list --domain commerce
godaddy api describe commerce.location.verify-address
godaddy api describe /location/addresses
godaddy api search address
godaddy api search catalog
godaddy api call /v1/commerce/catalog/products
godaddy api call /v1/some/endpoint -X POST -f "name=value" -f "count=5"
godaddy api call /v1/some/endpoint -X POST -F body.json
godaddy api call /v1/some/endpoint -H "X-Custom: value"
godaddy api call /v1/some/endpoint -q ".data[0].id"
godaddy api call /v1/some/endpoint -i
godaddy api call /v1/commerce/orders -s commerce.orders:read
Compatibility behavior:
godaddy api <endpoint> still works. If the token after api is not one of list, describe, search, or call, the CLI treats it as an endpoint and executes api call.
- This means legacy usage like
godaddy api /v1/commerce/location/addresses remains supported.
As with other large result sets, api list may be truncated in the inline JSON response. When truncated: true, read the full_output file path for complete results.
Address task rule:
- For requests like "find/search/verify an address", start with:
godaddy api search address
godaddy api list --domain location
godaddy api describe /location/addresses
- Do not use
godaddy actions describe for generic API endpoint discovery.
Actions
godaddy actions is only for developers discovering action hook contracts they can integrate with as providers (or consume as a contract in app configuration). It is not for API endpoint discovery or API calls.
godaddy actions list
godaddy actions describe commerce.taxes.calculate
godaddy actions describe commerce.payment.process
Use godaddy actions list to discover current action names and then godaddy actions describe <action> to inspect request/response schemas for that hook contract.
Webhooks
godaddy webhook events
Returns up to 50 events inline; use full_output path for the complete list (190+ events).
NDJSON Streaming
When --follow is used (currently on deploy), output is multiple JSON lines instead of one envelope. Each line has a type field:
{"type":"start","command":"godaddy application deploy my-app --follow","ts":"..."}
{"type":"step","name":"security-scan","status":"started","ts":"..."}
{"type":"step","name":"security-scan","status":"completed","ts":"..."}
{"type":"step","name":"bundle","status":"started","extension_name":"my-widget","ts":"..."}
{"type":"progress","name":"bundle","percent":50,"ts":"..."}
{"type":"step","name":"bundle","status":"completed","ts":"..."}
{"type":"result","ok":true,"command":"...","result":{...},"next_actions":[...]}
The last line is always terminal (type: "result" or type: "error"). It has the same shape as a standard envelope. If you only care about the final outcome, read the last line.
Stream event types:
| Type | Meaning | Terminal? |
|---|
start | Stream begun | No |
step | Step lifecycle (started/completed/failed) | No |
progress | Progress update (percent, message) | No |
result | Success envelope | Yes |
error | Error envelope | Yes |
Typical Workflows
Create and deploy a new application
godaddy env get
godaddy auth status
godaddy application init --name my-app \
--description "My app" \
--url https://my-app.example.com \
--proxy-url https://my-app.example.com/api \
--scopes "apps.app-registry:read apps.app-registry:write"
godaddy application add action --name my-action \
--url /actions/handler
godaddy application validate my-app
godaddy application release my-app \
--release-version 1.0.0
godaddy application deploy my-app --follow
godaddy application enable my-app --store-id <storeId>
Update and redeploy
godaddy application info my-app
godaddy application update my-app --description "New"
godaddy application validate my-app
godaddy application release my-app \
--release-version 1.1.0
godaddy application deploy my-app --follow
Diagnose failures
godaddy
godaddy auth status
godaddy env info
godaddy application validate <n>
godaddy application info <n>
Parsing Tips
- Always parse stdout as JSON. The only non-JSON output is
--help text.
- Check
ok first. Branch on true/false before reading result or error.
- Use
next_actions to discover what to do next. Fill template params from context.
- Exit code: 0 = success, 1 = error. But always prefer the JSON
ok field.
- stderr is diagnostic only. Verbose/debug output goes there. Never parse stderr for data.
- Truncated lists: check
truncated field. Read full_output file for complete data.
- Streaming: for
--follow commands, parse each line as an independent JSON object. The last line is the final result.