Trumpet logo
trumpetAPI

Endpoints

Update Pod

PATCH/v1/pods/{id}

Updates a Pod. Today it supports changing the Pod's status via a custom status ID — ideal for keeping trumpet in sync with your CRM. Requires the UpdatePod scope.


Authentication

This endpoint requires a valid API key with the UpdatePod scope. Pass it via the Authorization header:

Authorization: Bearer trpt_a1b2c3_your_key_here

Parameters

Path Parameters

ParameterTypeRequiredDescription
idstringRequiredThe ID of the Pod to update. You can find it in the Pod's edit URL, e.g. 69f0bafc4cc54b506b0355d8.

Body Parameters

ParameterTypeRequiredDescription
statusstringRequiredA custom status ID to move the Pod to. Get valid IDs from the List Custom Statuses endpoint. trumpet resolves the correct internal status and transition timestamps automatically.
💡

Setting a status

Pass a custom status id from the List Custom Statuses endpoint. trumpet resolves the underlying internal status (draft/active/completed/lost) and updates the Pod, its statistics, and transition timestamps correctly. Moving between two custom statuses that share an internal status won't reset time-in-stage metrics.
💡

Built to grow

statusis the first supported field. The endpoint rejects any field it doesn't recognise, so future additions won't silently change behaviour for existing integrations.

Webhooks & loop avoidance

⚠️

This endpoint does not emit a status webhook

Status changes made through this API do not trigger the event.pod_status_changed webhook. This is deliberate: it lets you push CRM stage changes into trumpet without a webhook firing straight back to your CRM and creating a loop. Manual changes in the trumpet UI still emit the event. See the Event Reference.

Example Request

cURL
curl -X PATCH https://trumpet.app/api/v1/pods/69f0bafc4cc54b506b0355d8 \
  -H "Authorization: Bearer trpt_a1b2c3_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "69f0bafc4cc54b506b0355e2"
  }'
JavaScript
const podId = "69f0bafc4cc54b506b0355d8";

const response = await fetch(`https://trumpet.app/api/v1/pods/${podId}`, {
  method: "PATCH",
  headers: {
    "Authorization": `Bearer ${process.env.TRUMPET_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    status: "69f0bafc4cc54b506b0355e2",
  }),
});

const { success, data } = await response.json();
Python
import os, requests

pod_id = "69f0bafc4cc54b506b0355d8"

response = requests.patch(
    f"https://trumpet.app/api/v1/pods/{pod_id}",
    headers={
        "Authorization": f"Bearer {os.environ['TRUMPET_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={"status": "69f0bafc4cc54b506b0355e2"},
)

data = response.json()

Success Response

Returns 200 OKwith the Pod's new status:

200 OK
{
  "success": true,
  "data": {
    "id": "69f0bafc4cc54b506b0355d8",
    "status": "completed",
    "custom_status": "69f0bafc4cc54b506b0355e2"
  }
}
FieldTypeDescription
idstringThe ID of the updated Pod.
statusstringThe Pod's internal status after the update — one of "draft", "active", "completed", "lost".
custom_statusstring | nullThe custom status ID the Pod now displays, or null if the brand has no custom status for that internal status.

Error Responses

StatusErrorCause
400Invalid pod IDThe id in the path is not a valid Pod ID.
400Unsupported field(s)The body contains a field this endpoint does not (yet) support. Only status is accepted today.
400status must be a valid custom status IDThe status value is missing or is not a valid custom status ID.
400Invalid status for this podThe custom status doesn't exist for your brand, or isn't assignable to this Pod's type.
400Not supported for enablement podsEnablement Pods use an internal publish/unpublish model, not custom statuses.
401Invalid or revoked API keyThe API key is missing, malformed, revoked, or deleted.
403Insufficient permissionsThe API key lacks the UpdatePod scope.
404Pod not foundNo Pod with that id exists in the brand associated with the API key.
429Rate limit exceededMore than 30 requests per minute for this key. Retry after a short delay.

💡

Need a status ID?

Call the List Custom Statuses endpoint to fetch the custom status IDs configured for your brand.