pinned.events

Developer documentation

Create Events

Create draft or published events with required fields first, then add location, media, ticketing, and publishing options.

Use the Pinned Events event creation API to create draft or published events with title, start time, timezone, location, classifications, media, and ticket links.

Minimal event request

curl https://pinned.events/api/public/v1/events \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: wordpress-post-123-create" \
  -d '{
    "channelId": 42,
    "title": "Rooftop Jazz Night",
    "startAt": "2026-06-12T20:00:00-04:00",
    "timezone": "America/New_York",
    "classifications": ["music"],
    "approxLocation": {
      "city": {
        "placeId": "place-new-york",
        "name": "New York",
        "countryCode": "US"
      }
    }
  }'
{
  "doc": {
    "id": 1,
    "title": "Rooftop Jazz Night"
  }
}

Required fields

FieldPurpose
channelIdNumeric ID of the target channel.
titleHuman-readable event title.
startAtISO datetime with offset.
timezoneIANA timezone identifier.
classificationsPublic classification slugs such as music.
approxLocation.city.placeIdPlace identifier for the event city.

Optional fields

As the workflow grows, add exact venue details, descriptions, images, ticket offers, endAt, attendance, audience, capacity, and publishing options.

Create event endpoint in the interactive API reference.
The reference shows every supported create-event request field and response schema.

Expanded event request

Use the minimal request for the first integration test. Add fields such as endAt, status, locationName, coverImage, and ticket offers when your publishing workflow is ready to send richer event data.

{
  "channelId": 42,
  "title": "Rooftop Jazz Night",
  "startAt": "2026-06-12T20:00:00-04:00",
  "endAt": "2026-06-12T22:00:00-04:00",
  "timezone": "America/New_York",
  "status": "published",
  "classifications": ["music"],
  "approxLocation": {
    "city": {
      "placeId": "place-new-york",
      "name": "New York",
      "countryCode": "US"
    }
  },
  "locationName": "Rooftop Room",
  "coverImage": 123,
  "offers": [
    {
      "name": "General admission",
      "url": "https://tickets.example/rooftop-jazz-night",
      "availability": "available"
    }
  ]
}

Location and classifications

Use public classification slugs in classifications. List supported values with GET /api/public/v1/classifications. Do not send internal taxonomy IDs in the public create-event payload.

Draft vs published events

Use status draft when a human should review imported data before it appears publicly. Use status published only when the source record has already been approved for public distribution.

Validation errors

{
  "error": {
    "code": "invalid_request",
    "message": "Request validation failed.",
    "requestId": "req_01J...",
    "details": {
      "field": "classifications",
      "issue": "Unknown classification slug \"gig\". Use GET /api/public/v1/classifications to list supported values."
    }
  }
}

Related pages

Core resources