cloudflare.dns.update_record ​
Create or update a Cloudflare DNS record
Creates or updates a DNS record in a Cloudflare zone.
If record_id is provided, the existing record is updated (PUT). Otherwise a new record is created (POST). The operation is idempotent when record_id is supplied.
Inputs:
- zone_id: Cloudflare zone ID where the record lives (required)
- record_type: DNS record type: A, AAAA, CNAME, TXT, MX, etc. (required)
- record_name: Fully-qualified record name, e.g. api.example.com (required)
- record_value: Record content / target, e.g. 1.2.3.4 (required)
- ttl: TTL in seconds (optional, default: 1 = automatic)
- proxied: Route traffic through Cloudflare proxy (optional, default: false)
- record_id: Cloudflare record ID; if supplied, updates this record (optional)
Outputs (terminal state_data):
- record_id: str — Cloudflare DNS record ID
- record_name: str — confirmed record name
- record_type: str — confirmed record type
- record_value: str — confirmed record content
- proxied: bool — whether the record is proxied
Plugin required: context.get_plugin("cloudflare") must expose .api_token and .account_id.
Overview ​
| Property | Value |
|---|---|
| Workflow type | Atomic |
| Library | App-cloudflare |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
zone_id | string | Yes | — | Cloudflare zone ID |
record_type | string | Yes | — | DNS record type: A, AAAA, CNAME, TXT, MX, etc. |
record_name | string | Yes | — | Fully-qualified DNS record name |
record_value | string | Yes | — | Record content / IP address / target |
ttl | integer | No | — | TTL in seconds (1 = automatic) |
proxied | boolean | No | — | Route through Cloudflare proxy |
record_id | string | No | — | Existing record ID to update (if omitted, a new record is created) |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
proxied | boolean | No | — | — |
record_id | string | No | — | — |
record_name | string | No | — | — |
record_type | string | No | — | — |
record_value | string | No | — | — |
ttl | integer | No | — | — |
zone_id | string | No | — | — |
failure_reason | string | No | — | — |
failure_type | string | No | — | — |
failed_action | string | No | — | — |
failed_at_state | string | No | — | — |
failed_step | string | No | — | — |
failed_layer | string | No | — | — |
error | string | No | — | — |
error_type | string | No | — | — |
States ​
| State | Initial | Terminal | Success | Auto-advance | Description |
|---|---|---|---|---|---|
pending | Yes | No | — | execute | — |
completed | No | Yes | Yes | — | — |
failed | No | Yes | No | — | — |
State Diagram ​
Transitions ​
| From | Action | To | Description |
|---|---|---|---|
pending | execute | completed | — |
* (any state) | fail | failed | — |
API Usage ​
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "cloudflare.dns.update_record",
"initial_data": {
"zone_id": "value",
"record_type": "value",
"record_name": "value",
"record_value": "value"
}
}