Skip to main content
POST
This endpoint creates a new contact. FlowIQ checks whether the number is on WhatsApp; the check is advisory, so a contact is still created when the check can’t be completed (see whatsapp_verified).

Overview

Create a new contact in your FlowIQ organization. The API automatically:
  • Checks whether the phone number is on WhatsApp (rejects numbers confirmed not to be)
  • Normalizes phone numbers for consistent storage
  • Checks for duplicate contacts
  • Parses and stores contact tags

Authentication

All requests require a Bearer token with API key format (fiq_...) in the Authorization header:
Only API keys with the fiq_ prefix are accepted.

Basic Usage

Create a Contact

Minimal Request (Name + Phone)


Request Parameters

Request Body

Phone numbers are automatically cleaned and normalized. Both +27 12 345 6789 and 27123456789 will be stored consistently.

Response Examples

Success Response (201)

whatsapp_verified is true when the number was confirmed on WhatsApp, or null when the check couldn’t be completed. A null contact is created normally; treat it as “not checked”, not as “not on WhatsApp”.

Error: Contact Already Exists (409)

Error: Not on WhatsApp (400)

Returned only when the number is confirmed not to be on WhatsApp.

Error: Missing Phone Number (400)

Error: Invalid API Key (401)


Phone Number Validation

The API performs several validation steps:
  1. Format Check: Removes special characters, keeps only digits
  2. Length Check: Must be at least 10 digits (including country code)
  3. WhatsApp Check: Asks whether the number is on WhatsApp. A number confirmed not to be on WhatsApp is rejected with a 400. If the check can’t be completed, the contact is created anyway and whatsapp_verified is null
  4. Duplicate Check: Ensures no existing contact has the same WhatsApp ID in your organization
A 201 doesn’t guarantee the number is on WhatsApp. Check whatsapp_verified: only true means it was confirmed.

Tag Management

Tags can be provided as a comma-separated string and are automatically:
  • Split into individual tags
  • Trimmed of whitespace
  • Stored as a JSON array
  • Empty tags are filtered out
Example:
Stored as:

Contact Properties

When a contact is created, the following properties are automatically set:

Error Codes


Best Practices

Phone Number Format

Always include the country code (e.g., +27 for South Africa, +1 for USA/Canada). The API handles formatting automatically.

Duplicate Detection

Check the 409 error response to get details about the existing contact before attempting to update or create a new one.

Tags Organization

Use consistent tag naming (e.g., lowercase, no spaces) for easier filtering and organization.

Error Handling

Handle the 400 “Invalid WhatsApp number” response by asking the user to check the number, and treat whatsapp_verified: null as unconfirmed rather than invalid.

Integration Example

Authorizations

Authorization
string
header
required

Your FlowIQ API key (from Settings → Profile → API Keys), sent as a bearer token. Format: Bearer fiq_YOUR_API_KEY

Body

application/json
name
string
required

Contact's full name

Example:

"John Doe"

phone_number
string
required

Phone number with country code (required)

Example:

"+27123456789"

email
string<email>

Contact's email address

Example:

"john@example.com"

tags
string

Comma-separated tags

Example:

"customer,premium,vip"

Response

Contact created successfully

success
boolean
required

Whether the request was successful

Example:

true

message
string
required

Success message

Example:

"Contact created successfully"

contact
object
required
whatsapp_verified
boolean | null
required

true when the number was confirmed on WhatsApp. null when verification could not be completed; the contact is still created. (A number confirmed NOT to be on WhatsApp returns 400 instead.)

Example:

true