Skip to main content

What is FlowIQ?

FlowIQ is our Conversations API that provides complete access to your WhatsApp conversation history, contact management, and analytics data. While FlowMod focuses on sending messages, FlowIQ specializes in retrieving and analyzing conversation data.

Message Retrieval

Access complete conversation history with pagination and search

Contact Management

List, search, and manage your WhatsApp contacts

Analytics Ready

Structure data for business intelligence and reporting

Real-time Access

Retrieve the latest conversation data via REST API

Quick Example

// Retrieve conversation messages
const response = await fetch(
  'https://api.flowiq.live/conversations?tenantId=YOUR_TENANT_ID&whatsappNumber=27123456789&limit=10',
  {
    headers: {
      'Authorization': 'Bearer YOUR_BEARER_TOKEN'
    }
  }
);

const data = await response.json();
console.log('Messages:', data.messages);
console.log('Total:', data.pagination.totalMessages);

Getting Started in 4 Steps

1

Create FlowIQ Account

Sign up at app.flowiq.live and connect your WhatsApp number
2

Get API Credentials

Navigate to Settings → API Keys to generate your bearer token and find your Tenant ID
3

Make Your First API Call

Use the REST API to retrieve conversation messages or contacts
4

Build Your Integration

Integrate conversation data into your applications, dashboards, or workflows

Key Features

1. Complete Conversation History

Access all messages from any WhatsApp conversation with rich metadata including:
  • Message content - Text, media URLs, and document links
  • Sender information - User, bot, human agent, or system messages
  • Status tracking - Sent, delivered, read, or failed
  • Timestamps - Precise message timing for analytics
  • Media types - Images, videos, audio, documents, and more
  • Voice transcriptions - Automated transcription of voice notes
  • Reactions - Emoji reactions and engagement metrics

2. Advanced Contact Management

Manage and search your WhatsApp contacts:
  • List all contacts with pagination support
  • Search by name or phone number for quick lookups
  • Contact details including profile pictures and last message
  • Unread counts to track pending conversations
  • Phone number lookup for specific contact retrieval

3. Analytics & Reporting

Build powerful analytics with structured data:
  • Message patterns and conversation flow analysis
  • Response time metrics for support teams
  • Engagement tracking through reactions and read status
  • Media analysis to understand content types
  • Agent performance with assignee tracking

API Capabilities

Retrieve messages from any WhatsApp conversation with filtering, pagination, and search.Key Parameters:
  • tenantId - Your FlowIQ tenant identifier
  • whatsappNumber - The WhatsApp number for the conversation
  • limit - Number of messages per page (default: 10, max: 100)
  • page - Page number for pagination
  • search - Search query to filter messages
Response Includes:
  • Message content and metadata
  • Sender type and status
  • Media URLs and types
  • Voice note transcriptions
  • Reactions and assignees
  • Complete pagination information
List all your WhatsApp contacts with search and pagination capabilities.Key Parameters:
  • action=contacts - Specifies contact listing action
  • tenantId - Your FlowIQ tenant identifier
  • limit - Number of contacts per page
  • page - Page number
  • search - Search by name or phone
Response Includes:
  • Contact name and number
  • Profile picture URL
  • Last message and timestamp
  • Unread message count
  • Pagination metadata
Find a specific contact by their WhatsApp phone number.Key Parameters:
  • action=find-by-phone - Specifies lookup action
  • tenantId - Your FlowIQ tenant identifier
  • phoneNumber - WhatsApp number to lookup
Response Includes:
  • Contact name and details
  • Profile picture URL
  • Success/error status

Use Cases

Customer Support Analytics

Build dashboards to analyze support conversations, measure response times, and track customer satisfaction metrics.

CRM Integration

Automatically sync WhatsApp conversations with your CRM system for unified customer data management.

Automated Reporting

Generate daily, weekly, or monthly reports of conversation metrics, engagement, and team performance.

Message Search & Discovery

Search through conversation history to find specific information, orders, or customer requests.

Business Intelligence

Analyze conversation patterns, customer behavior, and trends for strategic decision-making.

Workflow Automation

Trigger automated workflows based on conversation events, message content, or contact actions.

Authentication

All FlowIQ API requests require Bearer token authentication:
Authorization: Bearer YOUR_BEARER_TOKEN
Security Best Practices:
  • Never expose your bearer token in client-side code
  • Store credentials in environment variables
  • Implement token rotation regularly
  • Use HTTPS for all API calls
  • Monitor API usage for suspicious activity

Getting Your Credentials

1

Login to Dashboard

Go to app.flowiq.live and sign in
2

Navigate to API Settings

Click on Settings → API Keys or Developer Settings
3

Generate Bearer Token

Create a new bearer token or copy your existing one
4

Find Tenant ID

Your Tenant ID is displayed in Settings or Account Information
5

Secure Your Credentials

Store them securely - never commit to version control

Understanding Message Data

Sender Types

FlowIQ identifies different message sources:
TypeDescriptionUse Case
user-whatsappMessage from the end userCustomer messages
bot-whatsappAutomated bot responseAI or chatbot replies
human-whatsappMessage from a human agentSupport team responses
systemSystem notification or messageStatus updates, system info

Media Types

TypeDescriptionExample Use Case
imageImage files (JPG, PNG, etc.)Product photos
videoVideo filesDemo videos
audioAudio files or voice notesVoice messages
documentDocuments (PDF, DOCX, etc.)Contracts, invoices
interactiveInteractive messages (buttons, etc.)Menu selections
nullText-only messageRegular text chat

Message Status

StatusDescriptionMeaning
sentMessage sent successfullyIn transit
deliveredMessage delivered to recipientReached recipient device
readMessage read by recipientRecipient opened message
failedMessage failed to sendError occurred during send

Best Practices

Use Pagination

Always use limit and page parameters to avoid overwhelming responses and improve performance.

Implement Caching

Cache frequently accessed conversation data to reduce API calls and improve response times.

Error Handling

Always check the success field in responses and implement retry logic with exponential backoff.

Rate Limiting

Monitor rate limit headers and implement backoff strategies to avoid hitting limits.

Search Efficiently

Use search parameters to filter data at the API level rather than filtering large datasets locally.

Monitor Usage

Track your API usage patterns to optimize performance and identify potential issues early.

Complete Example Application

Here’s a complete example showing common FlowIQ operations:
class FlowIQClient {
  constructor(bearerToken, tenantId) {
    this.baseUrl = 'https://api.flowiq.live';
    this.token = bearerToken;
    this.tenantId = tenantId;
  }

  // Get conversation messages
  async getConversations(whatsappNumber, options = {}) {
    const { limit = 10, page = 1, search = '' } = options;
    const params = new URLSearchParams({
      tenantId: this.tenantId,
      whatsappNumber,
      limit,
      page,
      ...(search && { search })
    });

    const response = await fetch(
      `${this.baseUrl}/conversations?${params}`,
      {
        headers: {
          'Authorization': `Bearer ${this.token}`
        }
      }
    );

    if (!response.ok) {
      throw new Error(`API Error: ${response.status}`);
    }

    return await response.json();
  }

  // List all contacts
  async listContacts(options = {}) {
    const { limit = 20, page = 1, search = '' } = options;
    const params = new URLSearchParams({
      action: 'contacts',
      tenantId: this.tenantId,
      limit,
      page,
      ...(search && { search })
    });

    const response = await fetch(
      `${this.baseUrl}/conversations?${params}`,
      {
        headers: {
          'Authorization': `Bearer ${this.token}`
        }
      }
    );

    return await response.json();
  }

  // Find contact by phone
  async findContactByPhone(phoneNumber) {
    const params = new URLSearchParams({
      action: 'find-by-phone',
      tenantId: this.tenantId,
      phoneNumber
    });

    const response = await fetch(
      `${this.baseUrl}/conversations?${params}`,
      {
        headers: {
          'Authorization': `Bearer ${this.token}`
        }
      }
    );

    return await response.json();
  }

  // Fetch all messages (handles pagination)
  async getAllMessages(whatsappNumber) {
    let allMessages = [];
    let currentPage = 1;
    let hasMore = true;

    while (hasMore) {
      const data = await this.getConversations(whatsappNumber, {
        limit: 50,
        page: currentPage
      });

      allMessages = allMessages.concat(data.messages);
      hasMore = data.pagination.hasNextPage;
      currentPage++;
    }

    return allMessages;
  }
}

// Usage Example
const client = new FlowIQClient(
  'YOUR_BEARER_TOKEN',
  'YOUR_TENANT_ID'
);

// Get recent messages
const conversations = await client.getConversations('27123456789', {
  limit: 20,
  page: 1
});
console.log('Recent messages:', conversations.messages);

// Search contacts
const contacts = await client.listContacts({ search: 'John' });
console.log('Found contacts:', contacts.contacts);

// Lookup specific contact
const contact = await client.findContactByPhone('27123456789');
console.log('Contact details:', contact.contact);

// Get all messages (with automatic pagination)
const allMessages = await client.getAllMessages('27123456789');
console.log('Total messages retrieved:', allMessages.length);

Next Steps

Support