---
updatedAt: 2026-04-20T23:02:19.000Z
agentTools:
  projectIndex: https://developer.vinoshipper.com/llms.txt
---

# Remove the hold from a club membership

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Vinoshipper API Docs",
    "version": "3.0",
    "x-logo": {
      "url": "/static/img/brand/vinoshipper-logo.svg"
    }
  },
  "servers": [
    {
      "url": "https://vinoshipper.com"
    }
  ],
  "tags": [
    {
      "name": "Customer",
      "description": "List and adjust customer's stored credit balance."
    },
    {
      "name": "Customer",
      "description": "Generate Stripe-hosted payment collection links for a customer."
    },
    {
      "name": "Customer",
      "description": "Search, create, and modify customer records"
    },
    {
      "name": "Customer",
      "description": "Customer club memberships"
    }
  ],
  "paths": {
    "/api/v3/p/customers/{customerId}/memberships/{membershipId}/remove-hold": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Remove the hold from a club membership",
        "operationId": "removeHold",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Customer's ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "membershipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveHoldForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Operation successful",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ClubMembershipDetails"
                }
              }
            }
          },
          "400": {
            "description": "Request has failed validation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed"
          },
          "403": {
            "description": "Insufficient permission",
            "content": {}
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BasicAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "shortDescription": {
            "type": "string"
          }
        }
      },
      "ErrorDetails": {
        "required": [
          "status",
          "type"
        ],
        "type": "object",
        "properties": {
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "enum": [
              "VALIDATION",
              "COMPLIANCE",
              "PAYMENT_FAILURE",
              "SERVER_ERROR",
              "ACCESS_DENIED",
              "CONFLICT"
            ]
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "ErrorResponse": {
        "required": [
          "error"
        ],
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorDetails"
          }
        }
      },
      "AccessPoint": {
        "required": [
          "businessName",
          "city",
          "country",
          "lat",
          "lng",
          "locationId",
          "postalCode",
          "stateCode",
          "street1"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "locationId": {
            "type": "string",
            "description": "UPS Location ID"
          },
          "lat": {
            "type": "number",
            "readOnly": true
          },
          "lng": {
            "type": "number",
            "readOnly": true
          },
          "imageUrl": {
            "type": "string",
            "description": "A full URL to an image associated with the Access Point",
            "nullable": true,
            "readOnly": true
          },
          "hours": {
            "type": "string",
            "description": "Text describing open hours",
            "nullable": true,
            "readOnly": true
          },
          "note": {
            "type": "string",
            "description": "Optional note from access point",
            "nullable": true,
            "readOnly": true
          },
          "businessName": {
            "type": "string",
            "readOnly": true
          },
          "street1": {
            "type": "string",
            "readOnly": true
          },
          "street2": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "city": {
            "type": "string",
            "readOnly": true
          },
          "postalCode": {
            "type": "string",
            "readOnly": true
          },
          "stateCode": {
            "type": "string",
            "readOnly": true
          },
          "country": {
            "type": "string",
            "description": "Two letter country code",
            "readOnly": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "description": "UPS access point",
        "nullable": true
      },
      "Address": {
        "required": [
          "city",
          "country",
          "fullName",
          "poBox",
          "postalCode",
          "stateCode",
          "street1",
          "suspectedPOBox",
          "verifiedNotPOBox"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "salutation": {
            "type": "string",
            "description": "Formal greeting or title of the customer"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "businessName": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "description": "Use firstName and lastName instead.",
            "nullable": true,
            "deprecated": true
          },
          "street1": {
            "type": "string"
          },
          "street2": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string"
          },
          "postalCode": {
            "type": "string",
            "description": "ZIP Code"
          },
          "stateCode": {
            "type": "string"
          },
          "country": {
            "type": "string",
            "description": "Two letter country code",
            "default": "US"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Use phone instead.",
            "nullable": true,
            "deprecated": true
          },
          "phone": {
            "$ref": "#/components/schemas/InternationalPhoneNumber"
          },
          "accessPoint": {
            "$ref": "#/components/schemas/AccessPoint"
          },
          "description": {
            "type": "string",
            "description": "A description for the address, e.g. Home, Work",
            "nullable": true
          },
          "suspectedPOBox": {
            "type": "boolean",
            "description": "True if the address is suspected of being a PO Box",
            "readOnly": true
          },
          "poBox": {
            "type": "boolean",
            "description": "True if this address is confirmed as a PO Box",
            "readOnly": true
          },
          "verifiedNotPOBox": {
            "type": "boolean",
            "description": "True if someone has confirmed this address is not a PO Box. Club processing skips its PO Box check for such an address even when the text still reads like one.",
            "readOnly": true
          },
          "linkedAddress": {
            "$ref": "#/components/schemas/LinkedAddress"
          }
        },
        "description": "The address of the location where the sale is made",
        "nullable": true
      },
      "InternationalPhoneNumber": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string"
          },
          "country": {
            "type": "integer",
            "format": "int32"
          },
          "extension": {
            "type": "string"
          }
        },
        "nullable": true
      },
      "LinkedAddress": {
        "required": [
          "city",
          "country",
          "fullName",
          "postalCode",
          "stateCode",
          "street1"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "salutation": {
            "type": "string",
            "description": "Formal greeting or title of the customer"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "businessName": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "description": "Use firstName and lastName instead.",
            "nullable": true,
            "deprecated": true
          },
          "street1": {
            "type": "string"
          },
          "street2": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string"
          },
          "postalCode": {
            "type": "string",
            "description": "ZIP Code"
          },
          "stateCode": {
            "type": "string"
          },
          "country": {
            "type": "string",
            "description": "Two letter country code",
            "default": "US"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Use phone instead.",
            "nullable": true,
            "deprecated": true
          },
          "phone": {
            "$ref": "#/components/schemas/InternationalPhoneNumber"
          },
          "description": {
            "type": "string",
            "description": "A description for the address, e.g. Home, Work",
            "nullable": true
          },
          "accessPoint": {
            "$ref": "#/components/schemas/AccessPoint"
          }
        }
      },
      "DateOfBirth": {
        "required": [
          "day",
          "month",
          "year"
        ],
        "type": "object",
        "properties": {
          "day": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "year": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ClubMembershipGift": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Membership Gift ID",
            "format": "int32"
          },
          "salutation": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "$ref": "#/components/schemas/InternationalPhoneNumber"
          },
          "email": {
            "type": "string",
            "description": "Gift recipient's email address"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        },
        "description": "Optional gift details for this membership",
        "nullable": true
      },
      "ClubMembershipSummary": {
        "required": [
          "clubId",
          "clubName",
          "dateJoined",
          "description",
          "hold",
          "pickup",
          "skipLimit",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Membership ID",
            "format": "int32"
          },
          "clubId": {
            "type": "integer",
            "format": "int32"
          },
          "clubName": {
            "type": "string"
          },
          "dateJoined": {
            "type": "string",
            "format": "date"
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "pickup": {
            "type": "boolean",
            "description": "True if the member picks up their order, false if it is shipped."
          },
          "gift": {
            "$ref": "#/components/schemas/ClubMembershipGift"
          },
          "releasesRemaining": {
            "type": "integer",
            "description": "Club releases remaining before the membership is automatically expired. This is null when the membership does not expire.",
            "format": "int32",
            "nullable": true
          },
          "hold": {
            "type": "boolean",
            "description": "True if the membership is currently on hold"
          },
          "holdStartDate": {
            "type": "string",
            "description": "Null unless the membership will be on hold starting on the given date",
            "format": "date",
            "nullable": true
          },
          "holdEndDate": {
            "type": "string",
            "description": "Null unless the membership will be on hold until the given date",
            "format": "date",
            "nullable": true
          },
          "holdReason": {
            "type": "string"
          },
          "skipLimit": {
            "$ref": "#/components/schemas/SkipLimitDetails"
          },
          "profileUpdateToken": {
            "type": "string",
            "description": "The current membership profile update token if one has been generated and not expired",
            "nullable": true
          },
          "shippingClass": {
            "$ref": "#/components/schemas/ShippingClass"
          },
          "memberEnrolledById": {
            "type": "integer",
            "description": "The team member ID of the person that enrolled this club membership. This is null if the team member is unassigned.",
            "format": "int32",
            "nullable": true
          },
          "memberEnrolledByName": {
            "type": "string"
          },
          "memberDeactivatedById": {
            "type": "integer",
            "description": "The team member ID of the person that deactivated this club membership. This is null if the team member is unassigned.",
            "format": "int32",
            "nullable": true
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "ShippingClass": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "description": "Customer's preferred shipping class"
      },
      "SkipLimitDetails": {
        "required": [
          "canSkip",
          "ignoreSkipLimit",
          "releasesSkipped",
          "skipLimitEnabled",
          "skipLimitOverridden",
          "skipsRemaining"
        ],
        "type": "object",
        "properties": {
          "skipLimitEnabled": {
            "type": "boolean",
            "description": "True if release skip limit is enabled for the club"
          },
          "releasesSkipped": {
            "type": "integer",
            "description": "The number of releases skipped for this membership",
            "format": "int32"
          },
          "ignoreSkipLimit": {
            "type": "boolean",
            "description": "True if this membership ignores the club's skip limit"
          },
          "skipLimitOverridden": {
            "type": "boolean",
            "description": "Skips remaining overrides the club skip limit"
          },
          "skipsRemaining": {
            "type": "integer",
            "description": "The number of orders the membership can skip (can be negative)",
            "format": "int32"
          },
          "canSkip": {
            "type": "boolean",
            "description": "Can the member skip the next order"
          }
        },
        "description": "Details related to release skip limits"
      },
      "RemoveHoldForm": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "ClubDetails": {
        "required": [
          "archived",
          "giftEnabled",
          "id",
          "name",
          "pickupEnabled",
          "pickupOnly",
          "pickupRequiresAddress",
          "preorder",
          "private",
          "producerId",
          "producerName",
          "skipLimit",
          "skipLimitEnabled"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "producerName": {
            "type": "string",
            "description": "The name of the producer that owns this club"
          },
          "producerId": {
            "type": "integer",
            "description": "The ID of the producer that owns this club",
            "format": "int32"
          },
          "pickupEnabled": {
            "type": "boolean"
          },
          "pickupRequiresAddress": {
            "type": "boolean"
          },
          "pickupOnly": {
            "type": "boolean"
          },
          "giftEnabled": {
            "type": "boolean"
          },
          "giftReleaseOptions": {
            "type": "array",
            "description": "A list of valid buyer gift release options for a club. A null value indicated no expiration is an option.",
            "items": {
              "type": "integer",
              "description": "A list of valid buyer gift release options for a club. A null value indicated no expiration is an option.",
              "format": "int32"
            }
          },
          "private": {
            "type": "boolean"
          },
          "archived": {
            "type": "boolean"
          },
          "preorder": {
            "type": "boolean",
            "description": "True if the club is for pre-orders"
          },
          "skipLimitEnabled": {
            "type": "boolean",
            "description": "True if skip limit is enabled for this club"
          },
          "skipLimit": {
            "type": "integer",
            "description": "The maximum number of releases a membership can skip",
            "format": "int32"
          },
          "skipMinimumOrderValue": {
            "type": "number",
            "description": "A release counts as skipped if the order value is below this amount. Null means not configured",
            "nullable": true
          },
          "skipMinimumOrderQuantity": {
            "type": "integer",
            "description": "A release counts as skipped if the order quantity is below this amount. Null means not configured",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ClubMembershipDetails": {
        "required": [
          "club",
          "clubId",
          "clubName",
          "dateJoined",
          "description",
          "hold",
          "pickup",
          "skipLimit",
          "title"
        ],
        "type": "object",
        "properties": {
          "membershipSummary": {
            "$ref": "#/components/schemas/ClubMembershipSummary"
          },
          "club": {
            "$ref": "#/components/schemas/ClubDetails"
          },
          "producer": {
            "$ref": "#/components/schemas/ProducerDetails"
          },
          "memberEnrolledByName": {
            "type": "string"
          },
          "profileUpdateToken": {
            "type": "string",
            "description": "The current membership profile update token if one has been generated and not expired",
            "nullable": true
          },
          "title": {
            "type": "string"
          },
          "shippingClass": {
            "$ref": "#/components/schemas/ShippingClass"
          },
          "hold": {
            "type": "boolean",
            "description": "True if the membership is currently on hold"
          },
          "memberEnrolledById": {
            "type": "integer",
            "description": "The team member ID of the person that enrolled this club membership. This is null if the team member is unassigned.",
            "format": "int32",
            "nullable": true
          },
          "memberDeactivatedById": {
            "type": "integer",
            "description": "The team member ID of the person that deactivated this club membership. This is null if the team member is unassigned.",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "integer",
            "description": "Membership ID",
            "format": "int32"
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "clubName": {
            "type": "string",
            "description": "The club's name. Please use club.name",
            "deprecated": true
          },
          "releasesRemaining": {
            "type": "integer",
            "description": "Club releases remaining before the membership is automatically expired. This is null when the membership does not expire.",
            "format": "int32",
            "nullable": true
          },
          "gift": {
            "$ref": "#/components/schemas/ClubMembershipGift"
          },
          "dateJoined": {
            "type": "string",
            "format": "date"
          },
          "holdStartDate": {
            "type": "string",
            "description": "Null unless the membership will be on hold starting on the given date",
            "format": "date",
            "nullable": true
          },
          "holdEndDate": {
            "type": "string",
            "description": "Null unless the membership will be on hold until the given date",
            "format": "date",
            "nullable": true
          },
          "holdReason": {
            "type": "string"
          },
          "skipLimit": {
            "$ref": "#/components/schemas/SkipLimitDetails"
          },
          "pickup": {
            "type": "boolean",
            "description": "True if the member picks up their order, false if it is shipped."
          },
          "clubId": {
            "type": "integer",
            "description": "The club's id. Please use club.id",
            "format": "int32",
            "deprecated": true
          }
        }
      },
      "ProducerDetails": {
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "PRODUCER",
              "RETAILER",
              "IMPORTER",
              "WHOLESALER",
              "BRAND_OWNER",
              "BREWER",
              "DISTILLERY",
              "AFFINITY_PROGRAM"
            ]
          },
          "imageUrl": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "searchKey": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "BasicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}
```