---
title: "Pull sample records for a trigger event"
method: GET
path: "/api/v1/triggers/{event}/sample"
tags: ["Webhooks"]
---

# Pull sample records for a trigger event

`GET /api/v1/triggers/{event}/sample`

## Request

- Base URL: `https://api.agendaforge.app`
- URL: `https://api.agendaforge.app/api/v1/triggers/{event}/sample`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Returns recent records for field mapping in integration builders. Each object matches the payload field of a live webhook delivery exactly; the delivery additionally wraps it in an { event, timestamp, payload } envelope. May be an empty array for a new organization.

## Path parameters

- `event` 'contact.added' | 'contact.added_to_event' | 'contact.updated' | 'contact.removed' | 'sponsor.added' | 'sponsor.updated' | 'sponsor.removed' | 'session.added' | 'session.updated' | 'session.removed' | 'speaker.confirmed' | 'speaker.declined' | 'submission.created' | 'submission.status_changed' | 'review.completed' | 'event.published', required: Trigger event names accepted by POST /api/v1/hooks and GET /api/v1/triggers/{event}/sample.

## Response `200`

Recent records shaped like the corresponding delivery payload (Contact, Session, or Sponsor for their events; submission, review, speaker, and event payloads for the rest).

- union[]
  - union
    - Contact: Emitted identically by webhook deliveries, trigger samples, and the create response.
      - `id` string
      - `type` string: speaker | sponsor | attendee | vendor | partner | exhibitor | other.
      - `firstName` string
      - `lastName` string
      - `email` string
      - `phone` string, nullable
      - `company` string, nullable
      - `jobTitle` string, nullable
      - `bio` string, nullable
      - `avatarUrl` string, nullable
      - `location` string, nullable
      - `website` string, nullable
      - `socialLinks` object, nullable: Map of platform to URL.
      - `expertiseAreas` string[]
      - `tags` string[]
      - `customFields` object, nullable: Organization-defined custom fields.
      - `source` string, nullable
      - `status` string
      - `rating` number, nullable
      - `createdAt` string: ISO-8601 UTC timestamp.
      - `events` ContactEventRef[]
        - `eventId` string
        - `eventName` string
        - `eventNumber` number, nullable
        - `role` string
        - `status` string
    - Session: Emitted identically by webhook deliveries, trigger samples, and the create response.
      - `id` string
      - `eventId` string
      - `eventName` string
      - `eventNumber` number, nullable
      - `orgId` string
      - `title` string
      - `description` string, nullable
      - `type` string
      - `status` string
      - `trackId` string, nullable
      - `trackName` string, nullable
      - `roomId` string, nullable
      - `roomName` string, nullable
      - `startTime` string, nullable
      - `endTime` string, nullable
      - `duration` number: Minutes.
      - `maxAttendees` number, nullable
      - `tags` string[]
      - `isPublic` boolean
      - `isTentative` boolean
      - `parentSessionId` string, nullable
      - `customFields` object, nullable
      - `source` string, nullable
      - `createdAt` string: ISO-8601 UTC timestamp.
      - `speakers` SessionSpeakerRef[]
        - `contactId` string
        - `firstName` string
        - `lastName` string
        - `email` string
        - `role` string
        - `isConfirmed` boolean
    - Sponsor: Emitted identically by webhook deliveries, trigger samples, and the create response.
      - `id` string
      - `eventId` string
      - `orgId` string
      - `name` string
      - `tierId` string, nullable
      - `tierName` string, nullable
      - `website` string, nullable
      - `description` string, nullable
      - `logoUrl` string, nullable
      - `logoLightUrl` string, nullable
      - `hasBooth` boolean
      - `assignedPortal` string, nullable
      - `primaryContactId` string, nullable
      - `primaryContact` ContactSummary
        - `id` string
        - `firstName` string
        - `lastName` string
        - `email` string
        - `phone` string, nullable
        - `company` string, nullable
        - `jobTitle` string, nullable
      - `customFields` object, nullable
      - `submissionId` string, nullable
      - `createdAt` string: ISO-8601 UTC timestamp.
    - object: Speaker, submission, review, or event payload.

## Other responses

- `400`: A required field is missing or invalid, an unknown event was supplied, or a referenced record is not owned by the key's organization.
- `401`: The API key is missing, malformed, invalid, expired, or revoked.
- `403`: The API key is valid but does not include the public_api scope. Create a key with the public_api scope in Settings > API Tokens.
- `404`: No such endpoint under /api/v1. The message lists the valid endpoints.
- `429`: The fixed window for this API key (120 requests per minute) or IP (30 per minute, unauthenticated) is exhausted. Wait Retry-After seconds and retry.
- `500`: An unexpected server failure. The body still follows the JSON error contract; retry with exponential backoff.
- `default`: Any other failure, including 404 NOT_FOUND for an unknown path and transient 5xx errors. Always the same JSON error contract.

---

[API](https://skmtc.dev/agendaforge/apis/agendaforge-public-rest-api.md) · [All operations](https://skmtc.dev/agendaforge/apis/agendaforge-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agendaforge/apis/agendaforge-public-rest-api/revisions/b8956ce1e5f3?raw)
