Skip to main content
POST
/
v1
/
contacts
curl --request POST \
  --url https://brew.new/api/v1/contacts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "email": "jane@example.com",
  "firstName": "Jane",
  "lastName": "Doe",
  "customFields": {
    "plan": "enterprise"
  }
}
'
{
  "contact": {
    "email": "jane@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "subscribed": true,
    "verificationStatus": "valid",
    "suppressed": false,
    "suppressedReason": null,
    "createdAt": 1712592000000,
    "updatedAt": 1712592300000,
    "importId": null,
    "customFields": {
      "plan": "enterprise",
      "revenue": 4200
    }
  },
  "created": true,
  "fieldsCreated": [
    "plan"
  ],
  "warnings": []
}

Authorizations

Authorization
string
header
default:brew_your_api_key
required

Send your Brew API key as Authorization: Bearer brew_xxx.

Headers

Idempotency-Key
string

Optional idempotency key for safe retries. Reusing the same key with the same request body returns the original response for 24 hours.

Required string length: 1 - 100

Body

application/json

Single contact payload or batch contact payload.

email
string
firstName
string
lastName
string
subscribed
boolean
customFields
object

Response

Single requests return one contact result. Batch requests return a summary when every contact succeeded.

contact
object
required
created
boolean
required
fieldsCreated
string[]
required
warnings
object[]
required