Sparky Contacts API

Search and read the organization's contacts, and create a contact.

Address
https://contacts.sparkyli.com/api/v1
Plan
Plus and Max, with API access switched on for the organization

Endpoints

GET /contacts

Search and list contacts (not archived), by name.

q matches name, email or company.

Inputs

NameTypeWhat it is
qtext, up to 80 charactersPart of a name, email or company.
limitwhole number 1 to 100Page size. Default 50.
offsetwhole numberUse next_offset from the previous page.

Answer: contacts (a list) and next_offset

NameTypeWhat it is
idtextThe contact's id.
nametextThe person's name.
email, phone, company, job_titletext or nullAs entered.
city, state, country, website, languagetext or nullAs entered.
preferred_channel, sourcetext or nullHow to reach them, and where the contact came from.
do_not_contact, email_consent0 or 1Marketing flags.
created_at, updated_attextUTC time, like 2026-11-03 07:09:01.
next_offsetwhole number or nullPass as offset for the next page; null on the last page.

GET /contacts/{id}

One contact with notes and billing details.

Inputs

NameTypeWhat it is
id*textThe contact's id.

Answer: contact

NameTypeWhat it is
(all the list fields, and these)
currency, timezone, billing_address, tax_id, payment_termstext or nullBilling details.
address_line, postal_code, notes, email_consent_attext or nullAs entered.

Errors (besides the common ones)

  • 404 not_found: No such contact, or it is archived.

POST /contacts

Create a contact, like New contact in the app.

Needs a role that may create contacts. It does not look for a contact with the same email: search first if unsure.

Inputs

NameTypeWhat it is
Idempotency-Keyheader, text up to 120 charactersNew for each contact. A retry with the same key returns the first answer instead of a second contact.

Body (JSON)

NameTypeWhat it is
name*text, up to 200The person's name.
emailtext, up to 200Must look like an email address.
phonetext, up to 40
companytext, up to 200

Answer: contact

NameTypeWhat it is
idtextThe new contact's id.
name, email, phone, companytext or nullAs saved.
created_at, updated_attextUTC time.

Errors (besides the common ones)

  • 400 bad_request: name is missing, or a field is too long or wrong (the message names it).
  • 403 plan_limit: The plan's contact limit is reached.

Example body

{ "name": "Asha Rao", "email": "asha@asha.example", "phone": "+91 98200 00000", "company": "Asha Traders" }

Example answer (201)

{ "contact": { "id": "con_8c1f0f3e-1b8e-4a3e-9d0c-6a2c1e5b7a10", "name": "Asha Rao", "email": "asha@asha.example", "phone": "+91 98200 00000", "company": "Asha Traders", "created_at": "2026-11-03 07:09:01", "updated_at": "2026-11-03 07:09:01" } }

Example

curl -s -H "authorization: Bearer $TOKEN" "https://contacts.sparkyli.com/api/v1/contacts?q=acme&limit=5"

New here? Start with the three things first, then sign in. Errors are explained under errors and limits.