| name | Yes | Fact name: a lowercase letter, then up to 39 lowercase letters, digits or underscores, e.g. "pro_price". Post bodies use it as {{fact:pro_price}}. | |
| note | No | Private note on where the value comes from, up to 200 characters. Not shown on pages. null clears it; omitted keeps it. | |
| value | Yes | The current value, as plain text: 1–120 characters, one line, none of [ ] < > * _ ~ ` | \ { }. Put units and qualifiers inside it when they change together, e.g. "500 MB" or "v2.4.1". On a blog in more than one language, keep words out of it ("500 MB", not "500 MB per user"): it shows the same in every language. | |
| blog_id | No | Your blog's id, as returned by signup. Optional with an API key: it defaults to the key's blog, and any id you pass must be that blog. Required when the server runs without API keys. | |
| dry_run | No | true writes nothing and returns every post and line the change would affect. Without it the change goes live on every post that uses the fact immediately. | |
| source_url | No | https URL the value was checked against. Not shown on pages. null clears it; omitted keeps it. | |
| confirmed_at | No | When you actually checked the value: an ISO 8601 date ("2026-10-21") or date-time with a time zone ("2026-10-21T09:30:00Z"). Not in the future, not before 2000. Defaults to now, so only omit it when you checked just now. | |
| expected_value | No | Compare-and-set: the value you believe is current (null: you believe the fact does not exist yet). If it differs, nothing changes and the call fails with FACT_CONFLICT carrying the current value. | |
| idempotency_key | No | Optional retry key, any unique string (e.g. a UUID). Retrying with the same key and identical arguments returns the first result instead of writing again; the same key with different arguments fails with IDEMPOTENCY_KEY_CONFLICT. Scoped to your API key and this tool. | |