API Documentation for OutXAI

K
Kavya M

Getting started

Welcome to OutXAI API!

OutXAI API is the starting point on your journey towards building powerful Social Monitoring Systems. With OutXAI you can get all the data you need to build an efficient application while also saving your time and budget.

  • OutXAI API is using the REST technology for interchanging data between your application and our service.
  • The data exchange is made through the widely used HTTP protocol, which allows applying our API to almost all programming languages.

Our API currently supports three core endpoints:

  • POST Watchlists - Create keyword-based watchlists for monitoring
  • GET Posts - Retrieve and filter LinkedIn posts from your watchlists
  • PUT Watchlists - Update existing watchlists (rename, frequency, enable/disable)

Quick Set up Guide

  • To get your API KEY mail us support@outx.ai
  • Create a watchlist using the POST endpoint
  • Retrieve posts using the GET endpoint with your watchlist ID
  • Update watchlist settings as needed using the PUT endpoint

Ready to get started? Check out our detailed endpoint documentation below.


1. POST Watchlist

Create Watchlist API provides you a way to Create your watchlists once you have the Keywords Defined.

All POST data should be sent in the JSON format (UTF-8 encoding).

You can add multiple keyword in the keywords array in your watchlist which you want to track.

Curl

curl -X POST "https://cafqluqomuhgtchexldv.supabase.co/functions/v1/api-watchlist"
  -H "x-api-key: YOUR_TEAM_API_KEY_HERE" 
  -H "Content-Type: application/json" 
  -d '{
    "keywords": [
      {
        "keyword": "artificial intelligence",
        "required_keywords": ["business", "enterprise"],
        "exclude_keywords": ["gaming", "entertainment"]
      },
      "machine learning"
    ],
    "name": "Enterprise AI Watchlist",
    "description": "Track enterprise AI and ML discussions"
  }'

Authentication

  • x-api-key: “YOUR TEAM API KEY HERE”

Essential Parameters:

ParameterTypeDescription
keywordsarrayArray of keywords to track. Can be simple strings or detailed keyword objects.

Optional Parameters:

ParameterTypeDescription
namestringCustom name for the watchlist. If not provided, it is auto-generated from the keywords.
descriptionstringDescription for the watchlist. Used for metadata.

Request Body Examples

Simple:

{
  "keywords": ["artificial intelligence", "machine learning", "AI"]
}

Advance:

{
  "keywords": [
    {
      "keyword": "artificial intelligence",
      "required_keywords": ["technology", "innovation"],
      "exclude_keywords": ["science fiction", "movies"]
    },
    {
      "keyword": "machine learning",
      "required_keywords": ["data"],
      "exclude_keywords": ["gaming"]
    }
  ]
}

Request Body

{
  "keywords": ["blockchain", "cryptocurrency", "web3"],
  "name": "Crypto Trends Watchlist",
  "description": "Track latest trends in blockchain and cryptocurrency"
}

Response

Success (200) - New Watchlist Created

{
  "id": "uuid-string",
  "name": "Crypto Trends Watchlist",
  "slug": "crypto-trends-watchlist-abc123",
  "keywords": ["blockchain", "cryptocurrency", "web3"],
  "created": true,
  "results": [
    {
      "success": true,
      "keyword": "blockchain",
      "keyword_id": "uuid-string"
    },
    {
      "success": true,
      "keyword": "cryptocurrency",
      "keyword_id": "uuid-string"
    },
    {
      "success": false,
      "keyword": "web3",
      "error": "Failed to create keyword tracking"
    }
  ]
}

Response Fields Description

FieldTypeDescription
idstringUnique watchlist identifier in UUID format*
namestringCustom or auto-generated name of the watchlist.
slugstringURL-friendly slug for the watchlist.
keywordsarrayList of keywords associated with the watchlist.
createdbooleanIndicates whether the watchlist was successfully created.
resultsarrayArray of keyword creation results. Each entry includes success/failure for individual keywords.

Inside results array Fields description

FieldTypeDescription
successbooleanStatus of keyword creation (true if created successfully, false otherwise).
keywordstringThe keyword that was processed.
keyword_idstringUnique identifier for the keyword (UUID). Returned only if success = true.
errorstringError message if the keyword could not be created. Returned only if success = false.

Errors

Status CodeError MessageDescription
400"keywords array is required and must not be empty"The keywords parameter is missing or empty.
401"Unauthorized: Invalid API key"Authentication failed due to an invalid or missing API key.
500"Database error message"Internal server error occurred while processing the request. Contact OutXAI

2. GET Posts

Provide a Watchlist ID to retrieve the posts associated with one or more watchlists.

Once the request is processed, the response will include the watchlist details along with the corresponding posts.

Curl

curl -X GET "https://cafqluqomuhgtchexldv.supabase.co/functions/v1/api-posts?watchlist_id=<Watchlist_ID>"
  -H "x-api-key: YOUR_TEAM_API_KEY_HERE"
  

Multiple watchlist_id Curl

curl -X GET "https://cafqluqomuhgtchexldv.supabase.co/functions/v1/api-posts?watchlist_id=<Watchlist_ID1>,<Watchlist_ID2>,<Watchlist_ID3>&current_page=1&lang=true"
  -H "x-api-key: YOUR_TEAM_API_KEY_HERE"

Required Parameters

Field NameTypeDescription
watchlist_idstring / arrayWatchlist ID(s). Use comma-separated values for multiple IDs.

Optional Parameters

Field NameTypeDescription
current_pagenumberPage number for pagination. Default: 1.
sort_bystringSort order. Allowed values: "recent_first", "popular_first".
is_savedbooleanFilter for bookmarked posts only. Values: true, false.
langstringLanguage filter. Use "true" for English posts only.
start_datestringDate range start. Format: YYYY-MM-DD.
end_datestringDate range end. Format: YYYY-MM-DD.
post_typestringPost type filter Values: person, company, job_update and birthday_update
trendingbooleanFilter for posts with 100+ likes. Values: true, false.
interactedbooleanFilter for posts you've liked or commented on. Values: true, false.
seniority_levelstringFilter by author's seniority level.
labelsarrayFilter by tags. Use comma-separated values. Special value: "no labels" for posts without tags.

Response

{
  "data": [
    {
      "id": "string",
      "linkedin_post_url": "string",
      "tracking_lists_id": "string",
      "content": "string",
      "image_url": "string",
      "image_text": "string",
      "author_name": "string",
      "author_url": "string",
      "created_at": "2024-01-01T00:00:00Z",
      "posted_at": "2024-01-01T00:00:00Z",
      "likes_count": 0,
      "shares_count": 0,
      "influence_score": 0,
      "sentiment": "string",
      "comments_count": 0,
      "bookmark": false,
      "post_type": "string",
      "language": "string",
      "tags": ["tag1", "tag2"],
      "commented": false,
      "author_headline": "string",
      "author_image_url": "string",
      "image_urls": ["url1", "url2"],
      "videos": null,
      "seniority_level": "string",
      "liked": false,
      "tagDescriptions": [
        {
          "tag": "string",
          "description": "string"
        }
      ]
    }
  ],
  "count": 100
}

Response Field

FieldTypeDescription
dataarrayArray of LinkedIn post objects returned in the response.
countnumberTotal number of posts matching the query.

Inside data array (Post Object)

FieldTypeDescription
idstringUnique identifier for the post.
linkedin_post_urlstringDirect URL to the LinkedIn post.
tracking_lists_idstringIdentifier of the watchlist or tracking list associated with this post.
contentstringText content of the post.
image_urlstringPrimary image URL of the post (if any).
image_textstringExtracted text from the post image (OCR).
author_namestringName of the author.
author_urlstringURL of the author’s LinkedIn profile.
created_atstringDate/time when the record was created in the system (ISO 8601).
posted_atstringDate/time when the post was published on LinkedIn (ISO 8601).
likes_countnumberNumber of likes the post has received.
shares_countnumberNumber of times the post has been shared.
influence_scorenumberCalculated influence score for the post.
comments_countnumberNumber of comments on the post.
bookmarkbooleanWhether the post is bookmarked by the user.
post_typestringType of post (text, image, video, etc.).
languagestringLanguage of the post.
tagsarrayList of tags assigned to the post.
commentedbooleanWhether the authenticated user has commented on the post.
author_headlinestringHeadline/job title of the post author.
author_image_urlstringProfile image URL of the author.
image_urlsarrayList of all image URLs in the post.
videosarray/nullList of video URLs in the post (if any).
seniority_levelstringSeniority level of the post author.
likedbooleanWhether the authenticated user has liked the post.
tagDescriptionsarrayArray of tag objects with additional details.

Inside tagDescriptions array

FieldTypeDescription
tagstringThe tag name.
descriptionstringDescription of the tag.

Errors

Status CodeError MessageDescription
400"Missing or invalid watchlist_id parameter"The watchlist_id parameter is missing or invalid.
403"Access denied: You don't have permission to access these watchlists"User does not have permission to access the specified watchlist(s).
500"Internal server error"Generic server-side error occurred while processing the request. Contact support @OutXAI

3. PUT Watchlist

Update Watchlist API allows you to modify an existing watchlist.

You can update several properties of the watchlist, such as:

  • Name – rename the watchlist to keep it organized or aligned with new use cases.
  • Fetch frequency – control how often data is refreshed for the watchlist.
  • Status – enable or disable the watchlist without permanently deleting it.

All PUT data should be sent in the JSON format (UTF-8 encoding).

This endpoint is designed to help you maintain flexibility and keep your watchlists up to date as your monitoring needs evolve.

Curl

curl -X PUT "https://cafqluqomuhgtchexldv.supabase.co/functions/v1/api-watchlist"
  -H "x-api-key: YOUR_TEAM_API_KEY_HERE"
  -H "Content-Type: application/json"
  -d '{
    "id": "your-watchlist-id",
    "fetchFreqInHours": 6
  }'

Authentication

x-api-key: “YOUR TEAM API KEY HERE”


Essential Parameters

ParameterTypeDescription
idstringThe unique ID of the watchlist to update.

Optional Parameters

ParameterTypeDescription
namestringNew name for the watchlist. Cannot be empty.
fetchFreqInHoursnumberFetch frequency in hours. Allowed values: 1, 3, 6, 12, 24, 48, 72.
disablebooleanDisable or enable the watchlist. Values: true (disabled), false (enabled).

Request Body

Retrieve your UUID-string from POST Watchlist response

{
  "id": "uuid-string",
  "name": "Updated Name",
  "fetchFreqInHours": 12,
  "disable": false
}


Response

Success (200) – Watchlist Updated

{
  "id": "uuid-string",
  "name": "Updated Name",
  "fetchFreqInHours": 12,
  "disable": false,
  "updated": true,
  "message": "Watchlist updated successfully"
}
FieldTypeDescription
idstringUnique watchlist identifier (UUID).
namestringUpdated name of the watchlist.
fetchFreqInHoursnumberFrequency (in hours) at which the watchlist fetches new data.
disablebooleanIndicates whether the watchlist is disabled (true) or active (false).
updatedbooleanWhether the update action was successful.
messagestringConfirmation message about the update status.

Errors

Status CodeError MessageDescription
400"id is required"The id parameter is missing.
401"Unauthorized: Invalid API key"Authentication failed due to an invalid or missing API key.
500"Database error message"Internal server error occurred while processing the request. Contact support @OutXAI

For more information about the OutXAI API, feel free to contact us at support@outx.ai.


Track LinkedIn posts, job changes, birthdays, and keywords — never miss a sales trigger.
No Credit Card Required. Cancel anytime.