# Create Event — Luma

> Create an event on the connected Luma calendar. Required datetime fields must be ISO 8601 strings and Timezone must be an IANA timezone like America/New_York. See the documentation

- Key: `luma-create-event`
- Type: Action (Write)
- Version: 0.0.2
- App: Luma (`luma`) — https://pipedream.com/apps/luma.md
- This page (HTML): https://pipedream.com/apps/luma/actions/create-event
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/luma/actions/create-event/create-event.mjs

## Description

Create an event on the connected Luma calendar. Required datetime fields must be ISO 8601 strings and Timezone must be an IANA timezone like `America/New_York`. [See the documentation](https://docs.luma.com/reference/post_v1-event-create)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `name` | `string` | Yes | The event name. |
| `startAt` | `string` | Yes | The event start time as an ISO 8601 datetime, for example 2026-05-15T18:00:00Z. |
| `timezone` | `string` | Yes | The IANA timezone for the event, for example America/New_York. |
| `endAt` | `string` | No | The event end time as an ISO 8601 datetime, for example 2026-05-15T20:00:00Z. |
| `descriptionMd` | `string` | No | Markdown description to convert into Luma's rich text format. |
| `visibility` | `string` | No | The event visibility. |
| `slug` | `string` | No | Custom event URL slug. If aloha is available, the event URL will be https://luma.com/aloha. |
| `meetingUrl` | `string` | No | The online meeting URL for a virtual event. |
| `coverUrl` | `string` | No | A cover image URL uploaded to the Luma CDN. |
| `maxCapacity` | `integer` | No | Maximum number of tickets or registrations before the event is sold out. |
| `canRegisterForMultipleTickets` | `boolean` | No | Whether guests can register for multiple tickets. |
| `showGuestList` | `boolean` | No | Whether approved guests can see who else is attending. |
| `remindersDisabled` | `boolean` | No | Whether to disable Luma's default event reminders. |
| `nameRequirement` | `string` | No | How Luma should collect guest names during registration. |
| `phoneNumberRequirement` | `string` | No | Whether guests must provide a phone number during registration. |
| `tintColor` | `string` | No | A hex color like #bb2dc7; alpha channels are stripped by Luma. |
| `coordinateJson` | `string` | No | Optional JSON object parsed and sent as coordinate. Example: {"latitude":37.7749,"longitude":-122.4194}. |
| `geoAddressJson` | `string` | No | Optional JSON object parsed and sent as geo_address_json. Example: {"type":"google","place_id":"ChIJmQJIxlVYwokRLgeuocVOGVU","description":"Lobby entrance"}. |
| `registrationQuestionsJson` | `string` | No | Optional JSON array parsed and sent as registration_questions. Example: [{"label":"What are you looking forward to?","required":false}]. |
| `feedbackEmailJson` | `string` | No | Optional JSON object parsed and sent as feedback_email. Example: {"subject":"Thanks for attending!","message":"We hope you enjoyed the event."}. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "luma",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "luma-create-event",
  arguments: {
    name: "Name",
    startAt: "Start At",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "luma-create-event",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    luma: { authProvisionId: "apn_xxxxxxx" },
    name: "Name",
    startAt: "Start At",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "luma-create-event",
    "configured_props": {
      "luma": { "authProvisionId": "apn_xxxxxxx" },
      "name": "Name",
      "startAt": "Start At"
    }
  }'
```

---

- App: https://pipedream.com/apps/luma.md · All apps: https://pipedream.com/apps
