Create Contact

POST
https://reloop.sh/api/contacts/create

Body Parameters

emailstringRequired

Contact email address

firstNamestring

Contact first name

lastNamestring

Contact last name

status"subscribed""unsubscribed""blocked"

Possible values: subscribed | unsubscribed | blocked

propertiesobject

Contact properties as key-value pairs

Custom properties
keystringRequired

The property key.

valuestringRequired

The property value.

groupIdsstring[]

Array of group IDs to add the contact to

Example: ["value1", "value2"]

channelsobject[]

Array of channels to enroll the contact in

channels properties
channelIdstringRequired

Channel identifier

subscription"opt_in""opt_out"Required

Possible values: opt_in | opt_out

import { Reloop } from "reloop-email";

const reloop = new Reloop({ apiKey: "rl_123456789" });

const { response: contact, error } = await reloop.contacts.create({
  email: "john.doe@example.com",
  firstName: "John",
  lastName: "Doe",
  status: "subscribed",
  properties: { company: "Reloop", role: "Developer" },
  groupIds: ["grp_123456789"],
  channels: [{ channelId: "chn_123456789", subscription: "opt_in" }],
});
if (error) throw error;
{
  "object": "contact",
  "id": "con_123456789",
  "email": "john.doe@example.com",
  "firstName": "John",
  "lastName": "Doe",
  "status": "subscribed",
  "properties": {
    "company": "Reloop",
    "role": "Developer"
  },
  "groups": [
    {
      "id": "grp_123456789",
      "name": "Beta Testers"
    }
  ],
  "channels": [
    {
      "id": "channel_123456789",
      "name": "Newsletter",
      "subscription": "opt_in"
    }
  ],
  "suppressionReason": null,
  "suppressedAt": null,
  "createdAt": "2026-03-23T10:00:00.000Z",
  "updatedAt": "2026-03-23T10:00:00.000Z",
  "event": "evt_123456789"
}

Was this page helpful?

Edit this page