# Extend App Hosting Term (WithZero)

> Extend App Hosting Term (WithZero) is a paid API for AI agents from agents.withzero.xyz, paid per call via MPP or x402, $0.6/call, status healthy (last checked 2026-09-15, last successful call 2026-08-24).

Renews the hosting term for a deployed app on WithZero, optionally reactivating a paused/lapsed app.

## Facts

- Endpoint: POST https://agents.withzero.xyz/api/v1/deploy/apps/{id}/renew
- Price: $0.6/call
- Payment: MPP, x402
- Status: healthy
- Last checked: 2026-09-15
- Last successful call: 2026-08-24
- Success rate: 92% of calls made through Zero
- Activations on Zero: 13
- Provider: agents.withzero.xyz
- Website: https://agents.withzero.xyz
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agents-withzero-xyz-extend-app-hosting-term-withzero-26a5a35e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_QpVhU73CTz5nkhKjdvnQ-

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-withzero-xyz-extend-app-hosting-term-withzero-26a5a35e -d '<json body>'
```

Example prompt: Renew the hosting term for my WithZero app with ID app_abc123 — keep it running and pay the required hosting fee.

## When to prefer this

Use this endpoint when you need to extend or renew the hosting period of an existing WithZero-deployed app, especially when the app is about to lapse or has already paused. Prefer this over redeploying from scratch when the app state and source are intact and only the hosting term needs refreshing.

## Known failure modes

- App ID not found — 404 error
- Insufficient payment or mismatched term_fee_micros — payment error
- App already has an active non-expiring term — may return conflict
- Invalid app ID format — 400 validation error
- Payment rail mismatch between direct and zeroclick modes

## How this service works

Extend an app hosting term.

## Output

Returns the app ID, the new hosting term expiry date (ISO-8601), whether the app was resumed from a paused/lapsed state, the billing rail used (direct or zeroclick), and whether the operation was replayed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "properties": {}
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST",
      "PUT",
      "PATCH"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "appId",
  "termExpiresAt",
  "resumed",
  "billing_rail",
  "replayed"
 ],
 "properties": {
  "appId": {
   "type": "string"
  },
  "resumed": {
   "type": "boolean",
   "description": "True when this renewal brought a paused (lapsed) app back — a redeploy from its last source was queued."
  },
  "replayed": {
   "type": "boolean"
  },
  "billing_rail": {
   "enum": [
    "direct",
    "zeroclick"
   ],
   "type": "string"
  },
  "termExpiresAt": {
   "type": "string",
   "description": "The new hosting-term expiry after this renewal (ISO-8601)."
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-withzero-xyz-extend-app-hosting-term-withzero-26a5a35e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.withzero.xyz](https://www.zero.xyz/host/agents.withzero.xyz/llms.txt)
