logo
Events

Create event

Create a new event associated with the company linked to the API key.

POST
/events

Authorization

x-kommunity-api-key<token>

API key for authentication.

In: header

Request Body

application/jsonRequired
nameRequiredstring

Name of the event

descriptionRequiredstring

Detailed description of the event in HTML format

categoryRequiredstring

Primary category the event belongs to

subcategoryRequiredstring

Subcategory for more specific event classification

attendeeLimitinteger | null | null

Maximum number of attendees allowed (null means no limit)

Minimum: 1Maximum: 1000
countrystring | null | null

Country where the event takes place (required for in-person events)

streetstring | null | null

Street address (required for in-person events)

citystring | null | null

City (required for in-person events)

statestring | null | null

State or province (required for in-person events)

zipCodestring | null | null

Postal/ZIP code (required for in-person events)

eventImgstring | null | null

URL to the event image. Must be a URL from Kommunity's CDN (cdn.kommunity.app). See Image Upload Process for details.

startTimeRequiredstring

Event start time in ISO 8601 format, must be in UTC

Format: "2025-05-15T22:00:00.000Z"
endTimeRequiredstring

Event end time in ISO 8601 format, must be in UTC and after startTime

Format: "2025-05-15T22:00:00.000Z"
timezoneRequiredstring

Timezone identifier for the event (e.g., 'America/New_York')

hostNamestring

Name of the event host (Company name will be used if not provided)

emailstring

Email of the event host (Company email will be used if not provided)

phonestring

Phone number of the event host (Company phone will be used if not provided)

ticketsarray<object>

List of tickets available for the event (empty array means the event is free)

joinUrlstring | null | null

URL for joining online events

Format: "uri"
questionsarray<object>

Custom questions for attendees to answer when registering (maximum 3 questions)

Maximum: 3
attendeesarray<object>

List of attendees for the event. In responses from GET /events, this field is populated only if the includeAttendees query parameter is set to true.

crossPostobject

Cross-posting configuration to other event platforms. Cross-posting must be specified at event creation as it cannot be configured after the event is created. Should be null if event has tickets.

Response Body

Event created successfully

TypeScript Definitions

Use the response body type in TypeScript.

successboolean

Indicates if the event creation was successful

dataobject

Bad request - Invalid event data

TypeScript Definitions

Use the response body type in TypeScript.

successboolean

Indicates that the request failed

Value in: false
errorstring

Error message describing what went wrong

detailsstring

Detailed information about the error (when available)

Unauthorized - Invalid or missing API key, or insufficient permissions

TypeScript Definitions

Use the response body type in TypeScript.

successboolean

Indicates that the request failed

Value in: false
errorstring

Error message describing what went wrong

detailsstring

Detailed information about the error (when available)

Server error

TypeScript Definitions

Use the response body type in TypeScript.

successboolean

Indicates that the request failed

Value in: false
errorstring

Error message describing what went wrong

detailsstring

Detailed information about the error (when available)

curl -X POST "/api/v1/events" \
  -H "x-kommunity-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "description": "string",
    "category": "string",
    "subcategory": "string",
    "attendeeLimit": 1,
    "country": "string",
    "street": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string",
    "eventImg": "string",
    "startTime": "string",
    "endTime": "string",
    "timezone": "string",
    "hostName": "string",
    "email": "string",
    "phone": "string",
    "tickets": [
      {
        "name": "string",
        "price": 0
      }
    ],
    "joinUrl": "http://example.com",
    "questions": [
      {
        "question": "string",
        "required": false
      }
    ],
    "attendees": [
      {
        "name": "string",
        "username": "string",
        "email": "string",
        "image": "string"
      }
    ],
    "crossPost": {
      "luma": false,
      "eventbrite": false,
      "meetup": false
    }
  }'
const body = JSON.stringify({
  "name": "string",
  "description": "string",
  "category": "string",
  "subcategory": "string",
  "attendeeLimit": 1,
  "country": "string",
  "street": "string",
  "city": "string",
  "state": "string",
  "zipCode": "string",
  "eventImg": "string",
  "startTime": "string",
  "endTime": "string",
  "timezone": "string",
  "hostName": "string",
  "email": "string",
  "phone": "string",
  "tickets": [
    {
      "name": "string",
      "price": 0
    }
  ],
  "joinUrl": "http://example.com",
  "questions": [
    {
      "question": "string",
      "required": false
    }
  ],
  "attendees": [
    {
      "name": "string",
      "username": "string",
      "email": "string",
      "image": "string"
    }
  ],
  "crossPost": {
    "luma": false,
    "eventbrite": false,
    "meetup": false
  }
})

fetch("/api/v1/events", {
  headers: {
    "x-kommunity-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "/api/v1/events"
  body := strings.NewReader(`{
    "name": "string",
    "description": "string",
    "category": "string",
    "subcategory": "string",
    "attendeeLimit": 1,
    "country": "string",
    "street": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string",
    "eventImg": "string",
    "startTime": "string",
    "endTime": "string",
    "timezone": "string",
    "hostName": "string",
    "email": "string",
    "phone": "string",
    "tickets": [
      {
        "name": "string",
        "price": 0
      }
    ],
    "joinUrl": "http://example.com",
    "questions": [
      {
        "question": "string",
        "required": false
      }
    ],
    "attendees": [
      {
        "name": "string",
        "username": "string",
        "email": "string",
        "image": "string"
      }
    ],
    "crossPost": {
      "luma": false,
      "eventbrite": false,
      "meetup": false
    }
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-kommunity-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "/api/v1/events"
body = {
  "name": "string",
  "description": "string",
  "category": "string",
  "subcategory": "string",
  "attendeeLimit": 1,
  "country": "string",
  "street": "string",
  "city": "string",
  "state": "string",
  "zipCode": "string",
  "eventImg": "string",
  "startTime": "string",
  "endTime": "string",
  "timezone": "string",
  "hostName": "string",
  "email": "string",
  "phone": "string",
  "tickets": [
    {
      "name": "string",
      "price": 0
    }
  ],
  "joinUrl": "http://example.com",
  "questions": [
    {
      "question": "string",
      "required": false
    }
  ],
  "attendees": [
    {
      "name": "string",
      "username": "string",
      "email": "string",
      "image": "string"
    }
  ],
  "crossPost": {
    "luma": false,
    "eventbrite": false,
    "meetup": false
  }
}
response = requests.request("POST", url, json = body, headers = {
  "x-kommunity-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
{
  "success": true,
  "data": {
    "id": "string",
    "name": "string",
    "slug": "string",
    "url": "http://example.com",
    "description": "string",
    "category": "string",
    "subcategory": "string",
    "attendeeLimit": 1,
    "country": "string",
    "street": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string",
    "eventImg": "string",
    "email": "string",
    "phone": "string",
    "startTime": "2019-08-24T14:15:22Z",
    "endTime": "2019-08-24T14:15:22Z",
    "timezone": "string",
    "tickets": [
      {
        "name": "string",
        "price": 0
      }
    ],
    "joinUrl": "http://example.com",
    "questions": [
      {
        "question": "string",
        "required": false
      }
    ],
    "attendees": [
      {
        "name": "string",
        "username": "string",
        "email": "string",
        "image": "string"
      }
    ],
    "crossPostingData": {
      "luma": {
        "id": "string",
        "url": "http://example.com",
        "error": "string"
      },
      "eventbrite": {
        "id": "string",
        "url": "http://example.com",
        "error": "string"
      },
      "meetup": {
        "id": "string",
        "url": "http://example.com",
        "error": "string"
      }
    }
  }
}
{
  "success": false,
  "error": "string",
  "details": "string"
}
{
  "success": false,
  "error": "string",
  "details": "string"
}
{
  "success": false,
  "error": "string",
  "details": "string"
}