PlunkPlunk
API ReferenceContacts

Create or update contact

Create a new contact or update existing (upsert by email)

POST
/contacts

Authorization

ApiKeyAuth

AuthorizationBearer <token>

API Key authentication. The project is automatically derived from the key.

/v1/track requires a public key (pk_*) — it is the one endpoint intended for client-side use, and a secret key is rejected there with 401.

Every other endpoint requires a secret key (sk_*) and rejects public keys with 401.

So the two key types are not interchangeable in either direction: pick the key that matches the endpoint you are calling.

In: header

Request Body

application/json

email*string
Formatemail
subscribed?boolean
Defaulttrue
data?

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.plunk.jimster.dev/contacts" \  -H "Content-Type: application/json" \  -d '{    "email": "user@example.com",    "subscribed": true,    "data": {      "firstName": "John",      "lastName": "Doe",      "plan": "premium"    }  }'
{
  "id": "string",
  "email": "user@example.com",
  "subscribed": true,
  "data": {},
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "_meta": {
    "isNew": true,
    "isUpdate": true
  }
}
{
  "id": "string",
  "email": "user@example.com",
  "subscribed": true,
  "data": {},
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "_meta": {
    "isNew": true,
    "isUpdate": true
  }
}
{
  "error": "Email is required"
}
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid secret API key. This endpoint requires a secret key (sk_*), not a public key.",
    "statusCode": 401,
    "requestId": "8f14e45f-ceea-467a-9575-1f0f38e0b1c2"
  },
  "timestamp": "2025-01-15T10:30:00.000Z"
}