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

# Create Registrant Token

Creates a pre-population token that allows registrant details to be pre-filled on a registration form. Returns a token and a ready-to-use resume URL.

Pass `event_id` and any registrant fields (e.g., `fields[email]`, `fields[first_name]`, `fields[package_id]`) to generate a token. The returned URL (`https://client.swoogo.com/event/resume?i=TOKEN`) can be sent to the registrant to let them complete registration with their details pre-filled.

Common use case: sending personalized registration links via email campaigns or CRM integrations where you already know some attendee details.

# 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": "Registrants",
      "description": "Registrants are individuals who have registered for an event. Each registrant belongs to one event and carries a registration status, package selection, session choices, and financial data (fees, taxes, payments). Registrants can be checked in, emailed, approved/denied, and assigned to groups."
    }
  ],
  "paths": {
    "/registrants/token": {
      "post": {
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "tags": [
          "Registrants"
        ],
        "summary": "Create Registrant Token",
        "description": "Creates a pre-population token that allows registrant details to be pre-filled on a registration form. Returns a token and a ready-to-use resume URL.\n\nPass `event_id` and any registrant fields (e.g., `fields[email]`, `fields[first_name]`, `fields[package_id]`) to generate a token. The returned URL (`https://client.swoogo.com/event/resume?i=TOKEN`) can be sent to the registrant to let them complete registration with their details pre-filled.\n\nCommon use case: sending personalized registration links via email campaigns or CRM integrations where you already know some attendee details.",
        "operationId": "createRegistrantToken",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "event_id": {
                    "type": "string",
                    "example": "49"
                  },
                  "fields[email]": {
                    "type": "string",
                    "example": "atomkiewicz@hotmail.com"
                  },
                  "fields[first_name]": {
                    "type": "string",
                    "example": "Aleshia"
                  },
                  "fields[last_name]": {
                    "type": "string",
                    "example": "Tomkiewicz"
                  },
                  "fields[package_id]": {
                    "type": "string",
                    "example": "11"
                  },
                  "fields[reg_type_id]": {
                    "type": "string",
                    "example": "20"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Registrant Token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "event_id": {
                      "type": "number",
                      "example": 49
                    },
                    "id": {
                      "type": "string",
                      "example": "123"
                    },
                    "token": {
                      "type": "string",
                      "example": "nXGTJ-SfjLbOWNXwh6xXQDuUYFhZ5puH_1482142194"
                    },
                    "url": {
                      "type": "string",
                      "example": "https://client.swoogo.com/event/resume?i=nXGTJ-SfjLbOWNXwh6xXQDuUYFhZ5puH_1482142194"
                    }
                  }
                },
                "examples": {
                  "Create Registrant Token": {
                    "value": {
                      "event_id": 49,
                      "id": "123",
                      "token": "nXGTJ-SfjLbOWNXwh6xXQDuUYFhZ5puH_1482142194",
                      "url": "https://client.swoogo.com/event/resume?i=nXGTJ-SfjLbOWNXwh6xXQDuUYFhZ5puH_1482142194"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "access_token",
        "description": "OAuth 2.0 bearer token obtained from `POST /oauth2/token`. Tokens expire after 30 minutes. Include in the `Authorization` header as `Bearer {access_token}`."
      }
    }
  },
  "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"
      ]
    }
  ]
}
````