---
updatedAt: 2026-04-20T21:16:33.000Z
agentTools:
  projectIndex: https://swoogo.readme.io/llms.txt
---

# Remove package fee

Remove the fee for a specific package, effectively making it free. This sets the base price to 0 and clears all conditional pricing.

**Note:** This operation cannot be undone through the API. The fee will need to be reconfigured manually if pricing needs to be restored.


# OpenAPI definition

````json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Swoogo API",
    "version": "1.0.0",
    "summary": "REST API for the Swoogo event management platform",
    "description": "The Swoogo API provides programmatic access to manage events, registrants, sessions,\nspeakers, sponsors, and related resources on the Swoogo event management platform.\n\n## Authentication\n\nThe API uses OAuth 2.0 with the **client credentials** grant type.\n\n1. **Get your credentials** — Log in to Swoogo and go to **My Profile > API Credentials**\n   to find your consumer key and secret.\n2. **Encode credentials** — URL-encode the key and secret (RFC 1738), concatenate them\n   with a colon (`key:secret`), then Base64-encode the result.\n3. **Request a token** — `POST /oauth2/token` with your encoded credentials in the\n   `Authorization: Basic {encoded}` header and `grant_type=client_credentials` in the body.\n4. **Use the token** — Include `Authorization: Bearer {access_token}` on all subsequent requests.\n\n> Tokens expire after **30 minutes**. Request a new token when you receive a `401` response.\n\n## Rate Limiting\n\nAPI requests are rate-limited to **2,000 requests per 10-minute window** per API credential.\nList endpoints cost **10 credits** per call; all other endpoints cost **1 credit**.\nRate limit status is returned in response headers:\n\n| Header | Description |\n|--------|-------------|\n| `X-Rate-Limit-Limit` | Maximum requests allowed in the current window |\n| `X-Rate-Limit-Remaining` | Requests remaining in the current window |\n| `X-Rate-Limit-Reset` | Seconds until the window resets |\n\nWhen the limit is exceeded, the API returns `429 Too Many Requests`.\n\n## Pagination\n\nAll list endpoints return paginated results in this envelope:\n\n```json\n{\n  \"items\": [...],\n  \"_links\": { \"self\": { \"href\": \"...\" }, \"first\": { \"href\": \"...\" }, \"last\": { \"href\": \"...\" } },\n  \"_meta\": { \"totalCount\": 95, \"pageCount\": 5, \"currentPage\": 1, \"perPage\": 20 }\n}\n```\n\nControl pagination with these query parameters:\n\n| Parameter | Default | Max | Description |\n|-----------|---------|-----|-------------|\n| `page` | 1 | — | Page number (1-indexed) |\n| `per-page` | 20 | 1000 | Items per page. Capped at **200** when using `expand`. |\n\nPagination metadata is also returned in `X-Pagination-*` response headers.\n\n## Filtering and Sorting\n\nUse the `search` parameter to filter results. Combine multiple conditions with `&`.\n\n**Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`, `*beginswith*`, `*endswith*`, `*in*`\n\n**Examples:**\n- `search=registration_status=confirmed` — exact match\n- `search=created_at>=2024-01-01` — date range\n- `search=last_name=*beginswith*Sm` — starts with \"Sm\"\n- `search=status=*in*confirmed|attended` — matches any value (pipe-separated)\n- `search=id>100&registration_status=confirmed` — multiple conditions (AND by default)\n\nSet `searchCondition=or` to match **any** condition instead of all.\n\nUse `sort` to order results. Prefix with `-` for descending: `sort=-created_at`.\n\n## Field Selection and Expansion\n\nUse `fields` to request only the fields you need: `fields=id,email,first_name,last_name`.\nWhen omitted, a default subset of fields is returned.\n\nUse `expand` to include related objects in the response: `expand=homeAddress,sessions`.\nEach resource documents its available expand values. Using `expand` caps the page size at **200**.\n\n## Errors\n\nAll errors return a consistent JSON response:\n\n```json\n{\n  \"name\": \"Not Found\",\n  \"message\": \"The requested resource does not exist.\",\n  \"code\": 0,\n  \"status\": 404\n}\n```\n\n| Status | Meaning |\n|--------|---------|\n| `400` | Bad Request — invalid parameters or business rule violation |\n| `401` | Unauthorized — missing or expired bearer token |\n| `403` | Forbidden — valid token but insufficient permissions |\n| `404` | Not Found — resource does not exist or is not accessible |\n| `422` | Unprocessable Entity — validation errors on input fields |\n| `429` | Too Many Requests — rate limit exceeded |\n| `500` | Internal Server Error — unexpected server error |\n\n## Webhooks\n\nSwoogo can send HTTP callbacks when resources are created, updated, or deleted.\nConfigure webhooks via the API or the Swoogo UI. Supported trigger objects:\n`event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`,\n`session_attendance`, `registrant_line_item`.\n\nWebhook payloads can be sent as `json` (application/json) or `post` (form-encoded).\n",
    "termsOfService": "https://www.swoogo.com/terms",
    "contact": {
      "name": "Swoogo Developer Support",
      "url": "https://developer.swoogo.com",
      "email": "dev@swoogo.com"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "https://api.swoogo.com/api/v1",
      "description": "Production API server"
    },
    {
      "url": "https://local.swoogo.com/api/v1",
      "description": "Local API server"
    }
  ],
  "tags": [
    {
      "name": "Package Fees",
      "description": "Manage pricing for packages, including early bird rates."
    }
  ],
  "paths": {
    "/packages/{package_id}/fee": {
      "delete": {
        "tags": [
          "Package Fees"
        ],
        "summary": "Remove package fee",
        "description": "Remove the fee for a specific package, effectively making it free. This sets the base price to 0 and clears all conditional pricing.\n\n**Note:** This operation cannot be undone through the API. The fee will need to be reconfigured manually if pricing needs to be restored.\n",
        "operationId": "deletePackageFee",
        "parameters": [
          {
            "name": "package_id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the package",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "Package fee removed successfully (package is now free)",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/FeeResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "package_id": {
                          "type": "integer",
                          "description": "The package ID this fee belongs to",
                          "example": 2
                        },
                        "price": {
                          "type": "string",
                          "example": "0"
                        },
                        "conditional_prices": {
                          "type": "object",
                          "description": "All conditional prices are cleared (empty strings)",
                          "example": {
                            "76": "",
                            "77": ""
                          }
                        }
                      },
                      "required": [
                        "package_id"
                      ]
                    }
                  ]
                },
                "examples": {
                  "removedFee": {
                    "summary": "Package fee removed (now free)",
                    "value": {
                      "id": 124,
                      "package_id": 2,
                      "price": "0",
                      "conditional_prices": {
                        "76": "",
                        "77": ""
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/ParentNotFound"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "FeeResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the fee",
            "example": 124
          },
          "session_id": {
            "type": "integer",
            "description": "The session ID (only present for session fees)",
            "example": 73
          },
          "package_id": {
            "type": "integer",
            "description": "The package ID (only present for package fees)",
            "example": 2
          },
          "price": {
            "type": "string",
            "format": "decimal",
            "description": "The base price for the session/package",
            "example": "20.00"
          },
          "conditional_prices": {
            "type": "object",
            "description": "Conditional pricing based on registration field selections",
            "additionalProperties": {
              "type": "string",
              "format": "decimal"
            },
            "example": {
              "76": "10.00",
              "77": "5.00"
            }
          }
        },
        "required": [
          "id",
          "price",
          "conditional_prices"
        ]
      }
    },
    "responses": {
      "ParentNotFound": {
        "description": "Session or package not found",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "Not Found"
                },
                "message": {
                  "type": "string",
                  "example": "Object not found: 73"
                },
                "code": {
                  "type": "integer",
                  "example": 0
                },
                "status": {
                  "type": "integer",
                  "example": 404
                }
              }
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Authentication",
      "tags": [
        "Authentication"
      ]
    },
    {
      "name": "Core Resources",
      "tags": [
        "Events",
        "Registrants",
        "Sessions",
        "Speakers",
        "Sponsors",
        "Contacts"
      ]
    },
    {
      "name": "Registration",
      "tags": [
        "Registrant Types",
        "Packages",
        "Discount Codes",
        "Transactions",
        "Registrant Sessions",
        "Registrant Session Waitlists",
        "Registrant Groups",
        "Registrant Line Items",
        "Registrant Line Item Audits"
      ]
    },
    {
      "name": "Event Configuration",
      "tags": [
        "Event Fields",
        "Event Questions",
        "Event Websites",
        "Event Badges",
        "Event Folders",
        "Session Fields",
        "Session Locations",
        "Session Attendance",
        "Session Scans",
        "Session Fees",
        "Package Fees",
        "Tracks",
        "Pages"
      ]
    },
    {
      "name": "Speakers & Sponsors",
      "tags": [
        "Speaker Sessions",
        "Sponsor Fields",
        "Sponsor Attendance"
      ]
    },
    {
      "name": "Contacts & Communication",
      "tags": [
        "Contact Fields",
        "Invitation Lists",
        "Data Lists",
        "Data List Items"
      ]
    },
    {
      "name": "Call for Speakers",
      "tags": [
        "Call for Speaker Contacts",
        "Call for Speaker Reviews",
        "Call for Speaker Submissions"
      ]
    },
    {
      "name": "Media",
      "tags": [
        "Images"
      ]
    },
    {
      "name": "Integrations",
      "tags": [
        "Webhooks",
        "Webhook Groups"
      ]
    }
  ]
}
````