# Update Event

> PATCH /events/:id — update a custom event definition's payload schema.

`PATCH /events/:id`

Updates a [custom event](https://www.mailblastr.com/docs/automations/custom-events) definition's payload `schema` in place. The event **name is immutable** — renaming it would silently detach every automation whose trigger or wait step references it, so create a new event instead. Pass `schema` as a flat `key → type` map (`string` | `number` | `boolean` | `date`), or `null` to clear validation.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | Yes | The ID of the event definition to update. |

**Body parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `schema` | object | null | No | The replacement payload schema (flat key→type map), or `null` to remove validation. Passing `name` is rejected with `422 validation_error`. |

**Node.js**

```js
import { MailBlastr } from 'mailblastr';

const mb = new MailBlastr('mb_xxxxxxxxx');

const { data, error } = await mb.events.update('b6d24b8e-af0b-4c3c-be0c-359bbd97381e', {
  "schema": { "plan": "string", "seats": "number" }
});
console.log({ data, error });
```

**Ruby**

```ruby
require "mailblastr"

Mailblastr.api_key = "mb_xxxxxxxxx"

Mailblastr::Events.update("b6d24b8e-af0b-4c3c-be0c-359bbd97381e", {
  "schema": {
    "plan": "string",
    "seats": "number"
  }
})
```

**PHP**

```php
$mailblastr = Mailblastr::client('mb_xxxxxxxxx');

$mailblastr->events->update('b6d24b8e-af0b-4c3c-be0c-359bbd97381e', [
  'schema' => [
    'plan' => "string",
    'seats' => "number"
  ]
]);
```

**Python**

```python
import mailblastr

mailblastr.api_key = "mb_xxxxxxxxx"

mailblastr.Events.update("b6d24b8e-af0b-4c3c-be0c-359bbd97381e", {
  "schema": {
    "plan": "string",
    "seats": "number"
  }
})
```

**Go**

```go
package main

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

func main() {
    req, _ := http.NewRequest("PATCH", "https://api.mailblastr.com/events/b6d24b8e-af0b-4c3c-be0c-359bbd97381e", strings.NewReader(`{
  "schema": { "plan": "string", "seats": "number" }
}`))
    req.Header.Set("Authorization", "Bearer mb_xxxxxxxxx")
    req.Header.Set("Content-Type", "application/json")
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    out, _ := io.ReadAll(res.Body)
    fmt.Println(string(out))
}
```

**Rust**

```rust
use reqwest::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let res = Client::new()
        .patch("https://api.mailblastr.com/events/b6d24b8e-af0b-4c3c-be0c-359bbd97381e")
        .header("Authorization", "Bearer mb_xxxxxxxxx")
        .header("Content-Type", "application/json")
        .body(r#"{
  "schema": { "plan": "string", "seats": "number" }
}"#)
        .send()
        .await?;
    println!("{}", res.text().await?);
    Ok(())
}
```

**Java**

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.mailblastr.com/events/b6d24b8e-af0b-4c3c-be0c-359bbd97381e"))
    .header("Authorization", "Bearer mb_xxxxxxxxx")
    .header("Content-Type", "application/json")
    .method("PATCH", HttpRequest.BodyPublishers.ofString("""
{
  "schema": { "plan": "string", "seats": "number" }
}
"""))
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```

**.NET**

```csharp
using System.Net.Http;
using System.Text;

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Patch, "https://api.mailblastr.com/events/b6d24b8e-af0b-4c3c-be0c-359bbd97381e");
request.Headers.Add("Authorization", "Bearer mb_xxxxxxxxx");
request.Content = new StringContent(@"{
  ""schema"": { ""plan"": ""string"", ""seats"": ""number"" }
}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
```

**cURL**

```bash
curl -X PATCH 'https://api.mailblastr.com/events/b6d24b8e-af0b-4c3c-be0c-359bbd97381e' \
  -H 'Authorization: Bearer mb_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "schema": { "plan": "string", "seats": "number" }
}'
```

### Response

```json
{
  "object": "event",
  "id": "b6d24b8e-af0b-4c3c-be0c-359bbd97381e",
  "name": "user.created",
  "schema": { "plan": "string", "seats": "number" },
  "created_at": "2026-06-23T10:00:00.000Z",
  "updated_at": "2026-06-24T09:00:00.000Z"
}
```

An unknown id returns `404 not_found`; sending `name` or an invalid `schema` returns `422 validation_error`. See [Errors](https://www.mailblastr.com/docs/api/errors).
