# Decision Anchor — External Anchoring Layer (dd/create)

> Decision Anchor — External Anchoring Layer (dd/create) is a paid API for AI agents from api.decision-anchor.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-14).

Records a decision externally and immutably, separating the actor who makes a decision from the recorder that logs it, without judgment or intervention.

## Facts

- Endpoint: POST https://api.decision-anchor.com/v1/dd/create?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/decision-anchor-external-anchoring-layer-dd-create-d189afd7
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Cz7X4pT9NDGF56cLv5ajM

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 decision-anchor-external-anchoring-layer-dd-create-d189afd7 -d '<json body>'
```

Example prompt: Record this decision externally using Decision Anchor — the actor is my loan-approval agent, the decision is 'approved', and the reference ID is loan-20240601-00847. I want an immutable external log that separates the recorder from the actor.

## When to prefer this

Choose this endpoint when you need a neutral, external record of a decision that is strictly separated from the system or agent that made the decision — particularly for compliance, audit, or governance use cases where the recorder must not be the actor. Prefer this over internal logging when immutability, neutrality, and separation of concerns are required, such as in regulated industries, multi-party workflows, or AI agent accountability systems.

## Known failure modes

- Missing required decision payload fields — endpoint returns an error indicating which fields are absent
- Malformed request body — returns a 400-level error indicating invalid JSON or schema mismatch
- Network or service unavailability — results in a timeout or 5xx error with no record created
- Duplicate submission — may create a new record with a distinct ID rather than deduplicating, depending on service behavior
- Insufficient USDC balance or x402 payment failure — request is rejected before record is created

## How this service works

Record a decision declaration with its accountability scope, anchored externally (content-blind).

## Output

Returns a confirmation that the decision has been anchored externally, including a unique record identifier and creation timestamp, affirming that the record has been stored in the external anchoring layer separate from the originating actor.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "bodyType",
    "body",
    "method"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "request_id",
      "dd",
      "ee"
     ],
     "properties": {
      "dd": {
       "type": "object",
       "required": [
        "dd_unit_type",
        "dd_declaration_mode",
        "decision_type",
        "decision_action_type",
        "origin_context_type",
        "selection_state"
       ],
       "properties": {
        "decision_at": {
         "type": "string",
         "format": "date-time",
         "description": "Optional. The time the agent itself decided, as an ISO 8601 timestamp. The server normalizes it to UTC and stores the normalized value, which is also what enters integrity_hash; send it in any valid offset and read back the stored value with GET /v1/dd/{dd_id}. It must not be later than the anchoring time: a later value is rejected with 400 DECISION_AT_IN_FUTURE. Omit it and no decision time is recorded. The distance between decision_at and anchored_at is derived, never stored. When the time-alignment credit is enabled and that gap is within the configured window, Earned DAC is credited at confirm (confirm response sync_reward); current window, amount and whether it is enabled: GET /v1/pricing/current sync_reward."
        },
        "dd_unit_type": {
         "enum": [
          "single",
          "batch"
         ],
         "type": "string",
         "description": "How many decisions this record covers. single: one decision. batch: a set of decisions you declare as one unit."
        },
        "parent_dd_id": {
         "type": "string",
         "format": "uuid"
        },
        "decision_type": {
         "enum": [
          "internal_service",
          "external_interaction",
          "self_attestation"
         ],
         "type": "string",
         "description": "What the decision concerns. internal_service: an operation inside your own platform or service. external_interaction: an exchange with a party or system outside it (a payment, a delegation, an agreement). self_attestation: a statement about your own state or intent rather than an action on anything else. DA records the value you send and does not check it."
        },
        "selection_scope": {
         "enum": [
          "single_target",
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/decision-anchor-external-anchoring-layer-dd-create-d189afd7/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.decision-anchor.com](https://www.zero.xyz/host/api.decision-anchor.com/llms.txt)
