Introduction
Welcome to the Signalist API! You can use our API to access Signalist API endpoints, which can get information on your lists and prospects as well as update them in our database.
We have language bindings in Shell and JavaScript! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Authentication
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here" \
-H "api-key: 123456789"
const axios = require('axios');
const {data} = await axios.patch('/v1/list_person/12345', {
values: [
{
columnName: "test1",
fieldValue: "column text"
}
]
}, {
headers: {
'Content-Type': 'application/json'
'api-key': "123456789"
}
});
Make sure to replace
123456789with your API key.
Signalist uses API keys to allow access to the API. You can register a new API key at our developer portal.
Signalist expects for the API key to be included in all API requests to the server in a header that looks like the following:
api-key: 123456789
Lists
Get All Lists
curl "https://api.signalist.io/api/v1/list" \
-H "api-key: 123456789"
const axios = require('axios');
const {data} = await axios.get('/v1/list', {
headers: {
'Content-Type': 'application/json'
'api-key': "123456789"
}
});
The above command returns JSON structured like this:
[
{
"id": 1,
"name": "List1",
},
{
"id": 2,
"name": "List2",
}
]
This endpoint retrieves all lists of your organization.
HTTP Request
GET https://api.signalist.io/api/v1/list?page=1&limit=2
Query Parameters
| Parameter | Default | Description |
|---|---|---|
| page | 1 | used for pagination |
| limit | 10 | used for pagination |
| search_value | null | If set, you can search by list name |
Companies
Get Company Lists
This endpoint retrieves all company lists available in your organization.
HTTP Request
GET https://api.signalist.io/api/v1/list/company
Code Examples
curl "https://api.signalist.io/api/v1/list/company" \
-H "api-key: 123456789"
const axios = require('axios');
const {data} = await axios.get('/v1/list/company', {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
The above command returns JSON structured like this:
[
{
"id": 1,
"name": "Tech Companies",
"entityType": "ORGANIZATION"
},
{
"id": 2,
"name": "Startups",
"entityType": "ORGANIZATION"
}
]
Add Company to List
This endpoint allows you to add a company to a specific list using various identification methods.
HTTP Request
POST https://api.signalist.io/api/v1/list/company/{listId}
URL Parameters
| Parameter | Description |
|---|---|
| listId | The ID of the list to add the company to |
Request Body
The request body accepts the following parameters:
{
"companyName": "Signalist",
"websiteUrl": "https://www.signalist.io",
"linkedinUrl": "https://www.linkedin.com/company/signalist",
"jobTitle": "Software Engineer",
"method": "linkedinUrl",
"customColumns": {
"customField1": "value1",
"customField2": "value2"
}
}
| Parameter | Type | Required | Description |
|---|---|---|---|
| method | string | Yes | The identification method to use. Must be one of: "companyName", "websiteUrl", or "linkedinUrl" |
| companyName | string | No | The name of the company (required if method is "companyName") |
| websiteUrl | string | No | The website URL of the company (required if method is "websiteUrl") |
| linkedinUrl | string | No | The LinkedIn URL of the company (required if method is "linkedinUrl") |
| jobTitle | string | No | The job title associated with the company |
| customColumns | Record |
No | Custom column values as key-value pairs |
Code Examples
# Add company using LinkedIn URL with all available fields
curl -X POST "https://api.signalist.io/api/v1/list/company/123" \
-H "Content-Type: application/json" \
-H "api-key: 123456789" \
-d '{
"linkedinUrl": "https://www.linkedin.com/company/signalist",
"method": "linkedinUrl",
"jobTitle": "Software Engineer",
"customColumns": {
"customField1": "value1"
}
}'
# Add company using website URL
curl -X POST "https://api.signalist.io/api/v1/list/company/123" \
-H "Content-Type: application/json" \
-H "api-key: 123456789" \
-d '{
"websiteUrl": "https://www.signalist.io",
"method": "websiteUrl"
}'
# Add company using company name
curl -X POST "https://api.signalist.io/api/v1/list/company/123" \
-H "Content-Type: application/json" \
-H "api-key: 123456789" \
-d '{
"companyName": "Signalist",
"method": "companyName"
}'
const axios = require('axios');
// Add company using LinkedIn URL with all available fields
const response = await axios.post('/v1/list/company/123', {
linkedinUrl: 'https://www.linkedin.com/company/signalist',
method: 'linkedinUrl',
jobTitle: 'Software Engineer',
customColumns: {
customField1: 'value1',
customField2: 'value2'
}
}, {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
// Add company using website URL
const response2 = await axios.post('/v1/list/company/123', {
websiteUrl: 'https://www.signalist.io',
method: 'websiteUrl'
}, {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
// Add company using company name
const response3 = await axios.post('/v1/list/company/123', {
companyName: 'Signalist',
method: 'companyName'
}, {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
The above commands return JSON structured like this:
{
"success": true,
"processingId": "abc123-def456-ghi789",
"message": "Company added successfully"
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| success | boolean | Indicates whether the request was successful |
| processingId | string (optional) | ID that can be used to check the processing status of the company addition |
| message | string (optional) | Additional message about the operation result |
People
Get People Lists
This endpoint retrieves all company lists available in your organization.
HTTP Request
GET https://api.signalist.io/api/v1/list/person
Code Examples
curl "https://api.signalist.io/api/v1/list/person" \
-H "api-key: 123456789"
const axios = require('axios');
const {data} = await axios.get('/v1/list/person', {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
The above command returns JSON structured like this:
[
{
"id": 1,
"name": "Tech Companies",
"entityType": "PERSON"
},
{
"id": 2,
"name": "Startups",
"entityType": "PERSON"
}
]
Add Person to List
This endpoint allows you to add a person to a specific list using various identification methods.
HTTP Request
POST https://api.signalist.io/api/v1/list/person/{listId}
URL Parameters
| Parameter | Description |
|---|---|
| listId | The ID of the list to add the person to |
Request Body
The request body accepts the following optional parameters:
{
"name": "John Doe",
"companyName": "Signalist",
"linkedinUrl": "https://www.linkedin.com/in/johndoe",
"jobTitle": "Software Engineer",
"email": "john.doe@signalist.io",
"companyDomain": "signalist.io",
"companyLinkedinUrl": "https://www.linkedin.com/company/signalist",
"customColumns": {
"customField1": "value1",
"customField2": "value2"
}
}
All parameters are optional. You can provide any combination of these fields to identify and add a person to the list.
Code Examples
# Add person with all available fields
curl -X POST "https://api.signalist.io/api/v1/list/person/123" \
-H "Content-Type: application/json" \
-H "api-key: 123456789" \
-d '{
"name": "John Doe",
"companyName": "Signalist",
"linkedinUrl": "https://www.linkedin.com/in/johndoe",
"jobTitle": "Software Engineer",
"email": "john.doe@signalist.io",
"companyDomain": "signalist.io",
"companyLinkedinUrl": "https://www.linkedin.com/company/signalist",
"customColumns": {
"customField1": "value1"
}
}'
# Add person with minimal information (only LinkedIn URL)
curl -X POST "https://api.signalist.io/api/v1/list/person/123" \
-H "Content-Type: application/json" \
-H "api-key: 123456789" \
-d '{
"linkedinUrl": "https://www.linkedin.com/in/johndoe"
}'
const axios = require('axios');
// Add person with all available fields
const response = await axios.post('/v1/list/person/123', {
name: 'John Doe',
companyName: 'Signalist',
linkedinUrl: 'https://www.linkedin.com/in/johndoe',
jobTitle: 'Software Engineer',
email: 'john.doe@signalist.io',
companyDomain: 'signalist.io',
companyLinkedinUrl: 'https://www.linkedin.com/company/signalist',
customColumns: {
customField1: 'value1',
customField2: 'value2'
}
}, {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
// Add person with minimal information (only LinkedIn URL)
const response2 = await axios.post('/v1/list/person/123', {
linkedinUrl: 'https://www.linkedin.com/in/johndoe'
}, {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
The above commands return JSON structured like this:
{
"success": true,
"processingId": "abc123-def456-ghi789",
"message": "Person added successfully"
}
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| success | boolean | Indicates whether the request was successful |
| processingId | string (optional) | ID that can be used to check the processing status of the person addition |
| message | string (optional) | Additional message about the operation result |
Get Processing Status
This endpoint allows you to check the processing status of a person addition operation using the processingId returned from the "Add Person to List" endpoint.
HTTP Request
GET https://api.signalist.io/api/v1/processing-status/{id}
URL Parameters
| Parameter | Description |
|---|---|
| id | The processing ID returned from the "Add Person to List" endpoint |
Code Examples
curl "https://api.signalist.io/api/v1/processing-status/abc123-def456-ghi789" \
-H "api-key: 123456789"
const axios = require('axios');
const {data} = await axios.get('/v1/processing-status/abc123-def456-ghi789', {
headers: {
'Content-Type': 'application/json',
'api-key': '123456789'
}
});
The above command returns JSON structured like this:
{
"processingStatus": "DONE",
"signalistProspectIds": [12345, 67890],
"message": "Processing completed successfully"
}
Response Parameters
N8N Integration
Company Sender Node
The Signalist Company Sender node for N8N allows you to easily add companies to your Signalist lists directly from your N8N workflows. You can identify companies using LinkedIn URL, website URL, or company name, and optionally include job title information.
Node Configuration
The node supports multiple ways to identify a company:
- LinkedIn URL: Use a LinkedIn company URL (e.g., https://www.linkedin.com/company/signalistapp)
- Website URL: Use the company's website URL (e.g., https://www.signalist.io)
- Company Name: Use the company name directly (e.g., Signalist)
At least one of these fields must be provided. You can also combine them for better identification.
Additionally, you can optionally specify: - Job Title: When provided, the node will use lists that filter by job title - Custom Columns: Add custom key-value pairs to enrich the company data
Node Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| Website URL | String | Conditional | The website URL of the company (e.g., https://www.signalist.io). At least one identifier (Website URL, LinkedIn URL, or Company Name) must be provided. |
| LinkedIn URL | String | Conditional | The LinkedIn URL of the company (e.g., https://www.linkedin.com/company/signalistapp). At least one identifier (Website URL, LinkedIn URL, or Company Name) must be provided. |
| Company Name | String | Conditional | The name of the company (e.g., Signalist). At least one identifier (Website URL, LinkedIn URL, or Company Name) must be provided. |
| Job Title | String | Optional | The job title at the company (e.g., Software Engineer). When provided, the node will show job title-specific lists. |
| Custom Columns | Fixed Collection | Optional | Add custom columns to the company. Each custom column requires a name and value. |
| List of Companies by Name or ID | Options | Conditional | Choose from available company lists. This field is shown when Job Title is not provided. Lists are dynamically loaded from /api/v1/list/company. |
| List of Job Titles at Companies Name or ID | Options | Conditional | Choose from available job title-specific lists. This field is shown when Job Title is provided. Lists are dynamically loaded from /api/v1/list/people_by_title. |
Credentials
The node requires Signalist API credentials:
- API Key: Your Signalist API key
- Base URL: Your Signalist API base URL (e.g., https://api.signalist.io)
Output
The node returns the company data along with the API response from the Signalist API:
{
"success": true
}
Error Handling
The node includes comprehensive error handling: - Validates that at least one identifier is provided (LinkedIn URL, Website URL, or Company Name) - Validates that a list is selected from the dropdown - Handles API errors gracefully - Supports continue-on-fail mode for workflow resilience - Provides detailed error messages for debugging
Common Errors:
- Please provide a LinkedIn URL or company name or domain: Occurs when none of the identification fields (LinkedIn URL, Website URL, or Company Name) are provided
- Please select a list from the dropdown: Occurs when no list is selected
- Failed to fetch lists: Occurs when the API request to load available lists fails
Installation
Install the Signalist N8N node package:
npm install n8n-nodes-signalist
Usage Examples
Adding a Company via LinkedIn URL
- Add the "Send Company to Signalist" node to your workflow
- Enter the LinkedIn company URL in the "LinkedIn URL" field (e.g.,
https://www.linkedin.com/company/signalistapp) - Select a list from the "List of Companies by Name or ID" dropdown
- The node will automatically add the company to the selected list
Adding a Company via Website URL
- Add the "Send Company to Signalist" node to your workflow
- Enter the company's website URL in the "Website URL" field (e.g.,
https://www.signalist.io) - Select a list from the "List of Companies by Name or ID" dropdown
- The node will add the company to the selected list
Adding a Company via Company Name
- Add the "Send Company to Signalist" node to your workflow
- Enter the company name in the "Company Name" field (e.g.,
Signalist) - Select a list from the "List of Companies by Name or ID" dropdown
- The node will add the company to the selected list
Adding a Company with Job Title
- Add the "Send Company to Signalist" node to your workflow
- Enter company identification (LinkedIn URL, Website URL, or Company Name)
- Enter a job title in the "Job Title" field (e.g.,
Software Engineer) - Select a list from the "List of Job Titles at Companies Name or ID" dropdown (this dropdown appears when Job Title is provided)
- The node will add the company with job title information to the selected list
Adding a Company with Custom Columns
- Add the "Send Company to Signalist" node to your workflow
- Enter company identification (LinkedIn URL, Website URL, or Company Name)
- Click "Add Custom Column" in the "Custom Columns" section
- Enter a column name and value for each custom column you want to add
- Select a list from the dropdown
- The node will add the company with custom columns to the selected list
People Sender Node
The Signalist People Sender node for N8N allows you to easily add people to your Signalist lists directly from your N8N workflows. You can identify people using LinkedIn URL or by providing name along with company information.
Node Configuration
The node supports two main identification methods: - LinkedIn URL: Provide the person's LinkedIn profile URL - Name and Company: Provide the person's name along with at least one of the following: - Company Name - Company Domain - Company LinkedIn URL - E-Mail
You can also optionally include: - E-Mail: The person's email address - Job Title: The person's job title - Custom Columns: Add custom key-value pairs to enrich the person data
Node Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| LinkedIn URL | String | Conditional | The LinkedIn URL of the person (e.g., https://www.linkedin.com/in/username). Required if not using name+company method. |
| String | Optional | The email address of the person (e.g., john.doe@example.com) |
|
| Job Title | String | Optional | The job title of the person (e.g., Software Engineer) |
| Name | String | Conditional | The name of the person (e.g., John Doe). Required when using name+company method (must be provided with at least one company identifier). |
| Company Name | String | Conditional | The name of the company (e.g., Signalist). Required when using name+company method if no other company identifier is provided. |
| Company Domain | String | Conditional | The domain of the company (e.g., signalist.io). Can be used as a company identifier when using name+company method. |
| Company LinkedIn URL | String | Conditional | The LinkedIn URL of the company (e.g., https://www.linkedin.com/company/signalistapp). Can be used as a company identifier when using name+company method. |
| List Selection | Options | Yes | How to select the list: "Fetch From Api" (dynamically load lists) or "Manual Entry" (specify list ID manually). Default: "Fetch From Api". |
| List ID | String | Conditional | The ID of the list to add the person to (e.g., 123). Required when "Manual Entry" is selected in List Selection. |
| List Name or ID | Options | Conditional | Choose from available lists. Shown when "Fetch From Api" is selected in List Selection. Lists are dynamically loaded from /api/v1/list/people. |
| Custom Columns | Fixed Collection | Optional | Add custom columns to the person. Each custom column requires a name and value. |
Credentials
The node requires Signalist API credentials:
- API Key: Your Signalist API key
- Base URL: Your Signalist API base URL (e.g., https://api.signalist.io)
Output
The node returns the person data along with the API response from the Signalist API:
{
"success": true
}
Error Handling
The node includes comprehensive error handling: - Validates that either LinkedIn URL is provided, or name is provided with at least one company identifier (Company Name, Company Domain, Company LinkedIn URL, or E-Mail) - Validates that a list is selected (either from dropdown or manual entry) - Handles API errors gracefully - Supports continue-on-fail mode for workflow resilience - Provides detailed error messages for debugging
Common Errors:
- Please provide a LinkedIn URL or name and company name: Occurs when neither LinkedIn URL is provided, nor name with at least one company identifier
- Please select a list from the dropdown: Occurs when "Fetch From Api" is selected but no list is chosen
- List ID is required when using manual entry: Occurs when "Manual Entry" is selected but no List ID is provided
- Failed to fetch lists: Occurs when the API request to load available lists fails
Usage Examples
Adding a Person via LinkedIn URL
- Add the "Send People to Signalist" node to your workflow
- Enter the LinkedIn profile URL in the "LinkedIn URL" field (e.g.,
https://www.linkedin.com/in/username) - Set "List Selection" to "Fetch From Api"
- Select a list from the "List Name or ID" dropdown
- The node will automatically add the person to the selected list
Adding a Person via Name and Company Name
- Add the "Send People to Signalist" node to your workflow
- Enter the person's name in the "Name" field (e.g.,
John Doe) - Enter the company name in the "Company Name" field (e.g.,
Signalist) - Set "List Selection" to "Manual Entry"
- Enter the list ID in the "List ID" field (e.g.,
123) - The node will add the person to the specified list
Adding a Person via Name and Company Domain
- Add the "Send People to Signalist" node to your workflow
- Enter the person's name in the "Name" field
- Enter the company domain in the "Company Domain" field (e.g.,
signalist.io) - Optionally add email, job title, or other information
- Select a list from the dropdown or enter a list ID manually
- The node will add the person to the selected list
Adding a Person with Additional Information
- Add the "Send People to Signalist" node to your workflow
- Enter identification information (LinkedIn URL or Name + Company identifier)
- Optionally add:
- E-Mail address
- Job Title
- Company LinkedIn URL
- Add custom columns if needed by clicking "Add Custom Column" and entering name-value pairs
- Select a list from the dropdown or enter a list ID manually
- The node will add the person with all provided information to the selected list
Processing Status Node
The Signalist Processing Status node for N8N allows you to check the processing status of a list operation in Signalist. This is useful for monitoring the progress of list processing tasks.
Node Configuration
The node retrieves the current processing status by making a GET request to the Signalist API with a processing ID.
Node Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| Processing ID | String | Yes | The ID of the processing to get the status of (e.g., 12345678-1234-1234-1234-123456789012). This is typically a UUID returned when initiating a list processing operation. |
Credentials
The node requires Signalist API credentials:
- API Key: Your Signalist API key
- Base URL: Your Signalist API base URL (e.g., https://api.signalist.io)
Output
The node returns the processing status information from the Signalist API:
{
"status": "completed",
"progress": 100,
"message": "Processing finished successfully"
}
The exact structure of the response may vary based on the current processing state and the API version.
Error Handling
The node includes comprehensive error handling: - Validates that a Processing ID is provided - Handles API errors gracefully - Supports continue-on-fail mode for workflow resilience - Provides detailed error messages for debugging
Common Errors: - API errors when the processing ID is invalid or not found - Network errors when the API is unreachable - Authentication errors when API credentials are invalid
Usage Examples
Checking Processing Status
- Add the "Check Processing Status in Signalist" node to your workflow
- Enter the Processing ID in the "Processing ID" field (e.g.,
12345678-1234-1234-1234-123456789012) - The node will retrieve and return the current processing status
- Use the response to determine if processing is complete, in progress, or has failed
Monitoring List Processing in a Workflow
- After adding companies or people to a list, capture the processing ID from the response
- Add the "Check Processing Status in Signalist" node
- Pass the processing ID to the node
- Use conditional logic based on the status to determine next steps in your workflow
- Optionally, add a delay node and loop to periodically check the status until processing is complete
Signalist CRM Node
The Signalist CRM node for N8N allows you to update CRM data for companies or people in Signalist. This node enables you to sync CRM information such as URLs, status, custom fields, account owner details, and last updated timestamps from your CRM system to Signalist.
Node Configuration
The node supports updating CRM data for two types of entities: - Person: Update CRM data for a person/prospect in Signalist - Company: Update CRM data for a company/organization in Signalist
Different fields are available depending on the selected update type.
Node Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| Update Type | Options | Yes | What to update: "Person" or "Company". Default: "Person". |
| Signalist Organization ID | String | Conditional | The Signalist ID of the organization to add CRM data to. Required when Update Type is "Company". |
| Signalist Person ID | String | Conditional | The Signalist ID of the person to add CRM data to. Required when Update Type is "Person". |
| CRM Url | String | Optional | The URL of the Company or Person in your CRM (e.g., https://app-eu1.hubspot.com/contacts/123456789/record/0-1/01234567890). Available for both Person and Company. |
| CRM Status | String | Optional | The current status of the Person in your CRM (e.g., Deal). Only available when Update Type is "Person". |
| CRM Custom Field 1 | String | Optional | The value of a Custom Field 1 in your CRM (e.g., 1234567890). Available for both Person and Company. |
| CRM Custom Field 2 | String | Optional | The value of a Custom Field 2 in your CRM (e.g., 1234567890). Available for both Person and Company. |
| Last Updated At | DateTime | Optional | The last updated date and time of the Company or Person in your CRM (e.g., 2021-01-01T00:00:00Z). Available for both Person and Company. |
| Account Owner Name | String | Optional | The name of the Account Owner in your CRM (e.g., John Doe). Available for both Person and Company. |
| Account Owner Reference ID | String | Optional | The reference ID of the Account Owner in your CRM. You can use whatever helps you most (e.g., 1234567890). Available for both Person and Company. |
Credentials
The node requires Signalist API credentials:
- API Key: Your Signalist API key
- Base URL: Your Signalist API base URL (e.g., https://api.signalist.io)
Output
The node returns the updated CRM data along with a success indicator:
{
"success": true,
"organizationId": "12345",
"url": "https://app-eu1.hubspot.com/contacts/123456789/record/0-1/01234567890",
"customField1": "1234567890",
"customField2": "0987654321",
"lastUpdatedAt": "2021-01-01T00:00:00Z",
"accountOwner": "John Doe",
"accountOwnerId": "1234567890"
}
For Person updates, the response includes prospectId and currentStatus instead of organizationId.
Error Handling
The node includes comprehensive error handling: - Validates required parameters based on the selected update type - Handles API errors gracefully - Supports continue-on-fail mode for workflow resilience - Provides detailed error messages for debugging
Common Errors: - API errors when the organization ID or person ID is invalid or not found - Network errors when the API is unreachable - Authentication errors when API credentials are invalid
API Endpoints
The node uses the following API endpoints:
- Company updates: POST /api/v1/crm/organization/${organizationId}
- Person updates: POST /api/v1/crm/person/${prospectId}
Usage Examples
Updating CRM Data for a Person
- Add the "Signalist CRM" node to your workflow
- Set "Update Type" to "Person"
- Enter the "Signalist Person ID" (the ID of the person in Signalist)
- Optionally fill in:
- CRM Url (link to the person in your CRM)
- CRM Status (current status in your CRM)
- CRM Custom Field 1 and 2
- Last Updated At
- Account Owner Name and Account Owner Reference ID
- The node will update the CRM data for the person in Signalist
Updating CRM Data for a Company
- Add the "Signalist CRM" node to your workflow
- Set "Update Type" to "Company"
- Enter the "Signalist Organization ID" (the ID of the company in Signalist)
- Optionally fill in:
- CRM Url (link to the company in your CRM)
- CRM Custom Field 1 and 2
- Last Updated At
- Account Owner Name and Account Owner Reference ID
- The node will update the CRM data for the company in Signalist
Syncing CRM Data from HubSpot
- In your N8N workflow, retrieve person or company data from HubSpot
- Add the "Signalist CRM" node
- Map the HubSpot contact/company ID to the Signalist Person ID or Organization ID
- Map the HubSpot URL to the CRM Url field
- Map any custom properties to CRM Custom Field 1 and 2
- Map the last modified date to Last Updated At
- Map the owner information to Account Owner Name and Account Owner Reference ID
- The node will sync all the CRM data to Signalist