4.4 Get Campaign Events from ReactIn via API

You can get your campaign data directly from the API

Written By Ludovic Gueth

Last updated 4 months ago

βœ… What you’ll need before you start

Before using this API, make sure you have:

  1. A ReactIn Campaign

  2. Your Organization ID and API Key (You can find them in the API Keys page in the settings)

πŸ”— API Endpoint

Send a GET request to this endpoint to get campaign events:

GET https://app.reactin.io/api/[organizationId]/campaigns/[campaignId]/events

This will return a paginated list of your campaign events.


πŸ” Authentication & Headers

You need to send your API key in the headers using a Bearer token.

Header

Value

Description

Authorization

YOUR_API_KEY

Your secret API key from ReactIn

Content-Type

application/json

Required for all requests

πŸ” Your API key is visible in the settings


πŸ“„ Query Parameters

Parameter

Required

Type

Description

page

No

Integer

Page number (default is 1)

pageSize

No

Integer

Page size between 10 to 50 (default is 10)

status

No

List<String>

List of status

'pending'

'connection_sent'

'connection_accepted'

'message_sent'

'message_replied'

'follow_up_sent'

'skipped'

dateFrom

No

Datetime

"2025-08-01T08:00:00Z"

dateTo

No

Datetime

"2025-08-30T08:00:00Z"

Each page contains up to 50 campaign events.

You can filter the campaign events by multiple status to get only the event matching : status=connection_sent,connection_accepted,message_sent


πŸ§ͺ Example (JavaScript)

const fetchCampaignEvents = async (organizationId, campaignId, page = 1, status) => { 
   try { 
      const response = await fetch(         `https://app.reactin.io/api/v1/${organizationId}/campaigns/${campaignId}/
   events?page=${page}&pageSize=${pageSize}&status={status}`,
     {  
        method: 'GET', 
        headers: { 
        'Authorization': 'YOUR_API_KEY', 
        'Content-Type': 'application/json' 
     } 
   });

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

   const data = await response.json(); 

   console.log('Campaign events:', data.data); 
   console.log('Page:', data.page); 
   console.log('Next Page:', data.nextPage); 
   return data; 
 } catch (error) { 
   console.error('Error fetching leads:', error); 
 } 
}; 

🧾 Response format

{ 
  "data": [{
        id: event.id,
        status: event.status,
        createdAt: event.createdAt,
        connectionSentAt: event.connectionSentAt,
        connectionAcceptedAt: event.connectionAcceptedAt,
        messageSentAt: event.messageSentAt,
        messageRepliedAt: event.messageRepliedAt,
        followUpMessageSentAt: event.followUpMessageSentAt,
        lead: {
          firstName: event.listLead.firstName,
          lastName: event.listLead.lastName,
          email: event.listLead.email,
          linkedinProfileUrl: event.listLead.linkedinProfileUrl,
        },
        skippedAt: event.skippedAt,
        skippedReason: event.skippedReason,
   }], 
  "page": 1, 
  "nextPage": 2 
} 
  • data: the list of leads

  • page: current page number

  • nextPage: the next page number (or null if done)


βœ… Success Response

  • 200 OK – Campaign events fetched successfully


🚫 Common Errors

Code

Description

400

Bad request – invalid or missing parameters

401

Unauthorized – invalid or missing API key

403

Forbidden – you don’t have access to this list

404

Not found – Campaign ID doesn’t exist

429

Too many requests – rate limit exceeded

500

Internal server error


πŸ’‘ Best Practices

  • ⚑ Use pagination to avoid overloading your app

  • πŸ“₯ Cache results when possible to reduce API calls

  • πŸ” Keep your API key private β€” use a backend server or proxy

  • πŸ” Add retry logic for occasional network or server errors


πŸ’‘ Pro tip: Cache API responses on your end to optimize performance and reduce unnecessary calls.