---
title: "Gapping analysis of a golfer's set"
method: POST
path: "/v1/bag/gapping"
tags: ["Fitting tools"]
---

# Gapping analysis of a golfer's set

`POST /v1/bag/gapping`

## Request

- Base URL: `https://api.eldrick.com`
- URL: `https://api.eldrick.com/v1/bag/gapping`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.eldrick.com/oauth/authorize`, token URL `https://api.eldrick.com/oauth/token`, scopes: `fittings:read`)

Free and deterministic (MCP: analyze_bag_gapping). Carry and loft gaps between consecutive clubs, flags (too big, too small, overlap, duplicate loft, wedge gap too wide), the recommended wedge set from the PW loft, and suggested changes, each with the club type to fit (fitWith). Missing carries are estimated from loft and driver or 7-iron speed and marked estimated; missing lofts use stock lofts and are marked.

## Request body

- BagGappingRequest
  - `clubs` object[], required: Every club in the bag, in any order
    - `club` string, required: The club, e.g. Driver, 3W, 5-wood, 4H, 4-iron, 7, PW, GW, SW, LW, 54 (a wedge by loft), Putter
    - `type` 'driver' | 'fairway' | 'hybrid' | 'iron' | 'wedge' | 'putter': driver, fairway, hybrid, iron, wedge or putter, when the label alone is unclear
    - `loft` number: Loft in degrees, if known (a stock loft is assumed otherwise, and marked)
    - `carry` number: Typical carry in yards, if known (estimated otherwise, and marked)
    - `total` number: Typical total distance (carry plus roll) in yards, if known
  - `driverSpeed` number: Driver swing speed in mph, if known (used to estimate missing carries)
  - `sevenIronSpeed` number: 7-iron swing speed in mph, if known
  - `attackAngle` number: Optional wedge attack angle in degrees, for the bounce of suggested wedges
  - `lobWedgeFullSwing` 'yes' | 'no' | 'unsure': Optional: does the golfer hit the lob wedge with a full swing often? (sets the SW → LW gap)

## Response `200`

Analysis

- BagGappingResponse
  - `success` unknown
  - `clubs` object[]: In bag order (by loft), putter last.
    - `label` string
    - `type` string
    - `loft` number, nullable
    - `loftSource` 'given' | 'label' | 'engine_stock' | 'assumed' | 'iron_chart' | 'null', nullable
    - `carry` number, nullable
    - `carrySource` 'given' | 'estimated' | 'null', nullable
    - `total` number, nullable
  - `gaps` object[]
    - `from` string
    - `to` string
    - `loftGap` number, nullable
    - `carryGap` number, nullable
    - `estimated` boolean
    - `flags` BagFlag[]
      - `code` 'duplicate_loft' | 'wedge_gap_too_wide' | 'overlap' | 'gap_too_small' | 'gap_too_big' | 'too_many_clubs' | 'no_distance_data'
      - `severity` 'high' | 'medium' | 'low'
      - `basis` 'engine_rule' | 'eldrick_guidance' | 'rules_of_golf'
      - `message` string
      - `clubs` string[]
  - `flags` BagFlag[]
    - `code` 'duplicate_loft' | 'wedge_gap_too_wide' | 'overlap' | 'gap_too_small' | 'gap_too_big' | 'too_many_clubs' | 'no_distance_data'
    - `severity` 'high' | 'medium' | 'low'
    - `basis` 'engine_rule' | 'eldrick_guidance' | 'rules_of_golf'
    - `message` string
    - `clubs` string[]
  - `suggestions` object[]
    - `action` 'add' | 'drop' | 'replace' | 'change_loft'
    - `club` string
    - `loft` number, nullable
    - `replaces` string, nullable
    - `reason` string
    - `basis` 'engine_rule' | 'eldrick_guidance' | 'rules_of_golf'
    - `bounce` object, nullable
    - `fitWith` object: The analyze_fitting (POST /v1/fitting/analyze) club type, and loft or pwLoft, for this club
      - `tool` 'analyze_fitting'
      - `clubType` 'driver' | 'fairway' | 'hybrid' | 'iron' | 'wedge'
      - `loft` number
      - `pwLoft` number
      - `fairwayDesignation` string
  - `wedgeSet` object, nullable: The recommended wedge set from the PW loft (master fitter rules), with the alternative makeup
  - `speeds` object, nullable
  - `clubCount` integer
  - `clubCountAfter` integer
  - `estimatedCarries` integer
  - `thresholds` object: Yardage thresholds applied (ELDRICK guidance, scaled by driver speed)
  - `summary` string
  - `guidance` string[]

## Other responses

- `400`: Validation error (fewer than 2 clubs, an unrecognized club, or a club with no known loft)
- `401`: Unauthorized

---

[API](https://skmtc.dev/eldrick/apis/eldrick-golf-fitting-api.md) · [All operations](https://skmtc.dev/eldrick/apis/eldrick-golf-fitting-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eldrick/apis/eldrick-golf-fitting-api/revisions/9469c1821a83?raw)
