---
title: "Apply Pdn Decoupling"
method: POST
path: "/api/pdn/apply"
tags: ["pdn"]
---

# Apply Pdn Decoupling

`POST /api/pdn/apply`

## Request

- Base URL: `https://api.pcbgenerator.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pcbgenerator.com/api/pdn/apply`
- Auth: none declared

Place the recommended (MLCC) decoupling caps and re-verify — the Guided twin
of the agent's apply_pdn_decoupling tool. Same shared engine
(`solve_with_auto_decoupling`) + same merge (`merge_pdn_caps_into_lines`), so
both surfaces place identical caps. Returns the post-placement PDN result plus
the placed caps as BOM line dicts for the panel to append to the Phase II BOM
(the bulk is already sized there; a GHz-band rec is a stackup action, not a cap).

## Request body

- PDNAnalysisRequest
  - `plane_pairs` PlanePairConfig[], required
    - `power_layer_name` string, required
    - `ground_layer_name` string, required
    - `dielectric_thickness_mm` number, required
    - `dielectric_constant` number, required
    - `loss_tangent` number, required
    - `area_mm2` number, required
    - `board_width_mm` number, required
    - `board_height_mm` number, required
  - `decoupling_caps` DecouplingCapacitor[]
    - `type` 'MLCC' | 'interplanar' | 'bulk', required
    - `capacitance_f` number, required
    - `esr_ohm` number, required
    - `esl_h` number, required
    - `quantity` integer, required
    - `label` string, required
  - `target` PDNTargetConfig, required
    - `mode` 'preset' | 'custom', required
    - `preset_name` string, nullable
    - `voltage_v` number, required
    - `ripple_pct` number, required
    - `transient_current_a` number, required
    - `rise_time_ns` number, nullable

## Response `200`

Successful Response

- PDNApplyResult: Outcome of placing the recommended decoupling caps (POST /api/pdn/apply).
  - `result` PDNAnalysisResult, required
    - `plane_pairs` PlanePairConfig[], required
      - `power_layer_name` string, required
      - `ground_layer_name` string, required
      - `dielectric_thickness_mm` number, required
      - `dielectric_constant` number, required
      - `loss_tangent` number, required
      - `area_mm2` number, required
      - `board_width_mm` number, required
      - `board_height_mm` number, required
    - `interplanar_capacitances` InterplanarCapacitance[], required
      - `capacitance_pf` number, required
      - `esr_ohm` number, required
      - `esl_nh` number, required
      - `resonant_frequency_mhz` number, required
      - `capacitance_per_sq_inch_pf` number, required
    - `target_impedance_ohm` number, required
    - `bandwidth_hz` number, required
    - `impedance_profile` PDNImpedanceProfile, required
      - `points` PDNImpedancePoint[]
        - `frequency_hz` number, required
        - `impedance_ohm` number, required
        - `phase_deg` number, required
      - `violations` PDNViolation[]
        - `frequency_hz` number, required
        - `impedance_ohm` number, required
        - `target_ohm` number, required
        - `margin_db` number, required
        - `severity` 'critical' | 'warning', required
    - `decoupling_caps` DecouplingCapacitor[], required
      - `type` 'MLCC' | 'interplanar' | 'bulk', required
      - `capacitance_f` number, required
      - `esr_ohm` number, required
      - `esl_h` number, required
      - `quantity` integer, required
      - `label` string, required
    - `recommendations` DecouplingCapacitor[], required
      - `type` 'MLCC' | 'interplanar' | 'bulk', required
      - `capacitance_f` number, required
      - `esr_ohm` number, required
      - `esl_h` number, required
      - `quantity` integer, required
      - `label` string, required
    - `overall_pass` boolean, required
  - `placed_caps` DecouplingCapacitor[], required
    - `type` 'MLCC' | 'interplanar' | 'bulk', required
    - `capacitance_f` number, required
    - `esr_ohm` number, required
    - `esl_h` number, required
    - `quantity` integer, required
    - `label` string, required
  - `placed_bom_lines` object[]
  - `stackup_action` string, nullable
  - `converged` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/pcbgenerator/apis/pcb-stackup-generator-api.md) · [All operations](https://skmtc.dev/pcbgenerator/apis/pcb-stackup-generator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pcbgenerator/apis/pcb-stackup-generator-api/revisions/b6084b3ace32?raw)
