contacts

Create a contact, attached to a supplier or to a wholesale account

Creates one contact and answers 201 with it. name and preferred_contact_method are required; preferred_contact_method is EMAIL or PHONE, and the field it names has to be in the same body (an email for EMAIL, a phone for PHONE), or the call is refused 400.

supplier_id attaches the contact to a supplier and trading_partner_id attaches it to a wholesale account. They are separate fields on purpose: the two resolve through different tables, and one person can legitimately belong to both at once. An id neither table has fails the call rather than creating a person attached to nothing. A contact who is the first on an account becomes that account's main contact; nobody is promoted afterwards, because who leads is a decision somebody makes rather than an accident of insert order.

description is capped at 1,024 characters, department and role at 255. An email another contact already has is refused 400 with "Contact already exists. The email must be unique."

Scope: suppliers:write, which includes suppliers:read.

post/api/v1/contacts

Request

  • Base URL: https://api.app.tightly.io
  • URL: https://api.app.tightly.io/api/v1/contacts
  • Auth: HTTP bearer

Headers

Tightly-Versionstring
Example:2026-11

The date train to answer on. One train exists today, 2026-11, the one this reference describes and the one every key is minted on, so the call answers on it with or without this header. Send it anyway, so a client built now names its train from the start.

Idempotency-Keystring
Example:b8f1c0d2-6a4e-4f39-9c21-0d5f2e7a1b44

A string of your own, up to 255 characters, that makes this write safe to retry. Send the same key twice and the second request is answered with the first one's status and body instead of writing again, so a client that retried after a timeout ends holding the record's id rather than creating a second one. Reusing a key with a different body, or while the first request is still running, is refused 409. A write that failed releases its key. Keys answer for 24 hours and belong to the API key that used them. A key longer than 255 characters is ignored and the write goes ahead without the guarantee.

Request body

citystring nullable
countrystring nullable
departmentstring nullable
descriptionstring nullable
emailstring email
namestring required
phonestring nullable
preferred_contact_methodstring required
rolestring nullable
supplier_idstring nullable
trading_partner_idstring nullable

Response

The contact as created, with its supplier named.

Changes

No recorded changes to this operation across all 1 revision of this API.