API reference

Complete documentation for all Jungler Public API endpoints.

Last updated 8 months ago

Base URL

https://production.viacurrent.com/api

Authentication

All requests require an API key in the header:

X-API-Key: your_api_key_here

Endpoints

Workspaces

List Workspaces

GET /workspaces/

Get all workspaces accessible with your API key.

Response:

[  {    "workspace_id": "507f1f77bcf86cd799439011",    "name": "My Company",    "role": "owner"  }]

Data Collection

Create Interaction Run

POST /workbooks/

Start collecting engagement data from a post.

Request Body:

{
  "post_url": "https://www.linkedin.com/posts/username_activity-1234567890",
  "data_types": ["comment", "reaction"],
  "workspace_id": "507f1f77bcf86cd799439011"
}

Parameters:

  • post_url (string, required): Valid LinkedIn post URL

  • data_types (array, required): Types of data to collect

    • Options: ["comment", "reaction"]

    • Both can be specified: ["comment", "reaction"]

  • workspace_id (string, required): Target workspace ID

Supported LinkedIn URL Formats:

  • https://www.linkedin.com/posts/username_activity-1234567890

  • https://www.linkedin.com/feed/update/urn:li:activity:1234567890

Response (202 Accepted):

{
  "task_id": "abc123-def456-ghi789",
  "status": "pending"
}

Task Monitoring

Get Task Status

GET /tasks/{task_id}/status

Monitor the progress of your data collection task.

Response (In Progress):

{
  "task_id": "abc123-def456-ghi789",
  "status": "running"
}

Response (Completed Successfully):

{
  "task_id": "abc123-def456-ghi789",
  "status": "success",
  "completed_at": "2025-08-10T10:30:00Z",
  "result": {
    "workbook_id": "507f1f77bcf86cd799439012",
    "items_collected": 150,
    "success": true
  }
}

Response (Failed):

{
  "task_id": "abc123-def456-ghi789",
  "status": "failure",
  "completed_at": "2025-08-10T10:35:00Z",
  "error": "Post not found or access denied"
}

Task Status Values:

  • pending - Task processing

  • success - Collection completed successfully

  • failure - Collection failed with error

Data Retrieval

Get Contacts

GET /workbooks/{workbook_id}/contacts

Retrieve de-duplicated contact data from collected engagements.

Query Parameters:

  • fields (string, default: "name,profile_url"): Comma-separated fields to include

  • activity_filter (string, optional): Filter contacts by activity type

Available Fields:

  • name - Full display name

  • first_name - Parsed first name

  • last_name - Parsed last name

  • urn - LinkedIn URN identifier

  • profile_url - LinkedIn profile URL

  • profile_type - Type: "user" or "company"

  • description - Profile headline/description

  • profile_image_url - Profile photo URL

  • stats - Complete engagement statistics object

  • stats.posts - Number of posts made

  • stats.comments - Number of comments made

  • stats.reactions - Number of reactions given

Activity Filter Options:

  • posters - Users who created posts

  • commenters - Users who made comments

  • reactors - Users who gave reactions

  • Combinations: "commenters,reactors"

Examples:

Basic contact list:

GET /workbooks/{id}/contacts

Custom fields:

GET /workbooks/{id}/contacts?fields=name,description,stats.comments

Filter by activity:

GET /workbooks/{id}/contacts?activity_filter=commenters&fields=name,profile_url,stats

Response:

[  {    "name": "John Doe",    "profile_url": "https://linkedin.com/in/johndoe",    "description": "Software Engineer at Tech Corp",    "stats": {      "posts": 0,      "comments": 5,      "reactions": 12    }  }]

Get Comments

GET /workbooks/{workbook_id}/comments

Retrieve all comments from the collected data.

Query Parameters:

  • include_replies (boolean, default: true): Include reply comments in results

Response:

[
  {
    "content": "Great insights! Thanks for sharing this.",
    "author": {
      "name": "Jane Smith",
      "profile_url": "https://linkedin.com/in/janesmith"
    },
    "urn": "urn:li:comment:1234567890",
    "parent_urn": null,
    "meta": {
      "is_reply": false,
      "replies": 2,
      "is_pinned": false,
      "is_edited": false
    },
    "posted_at": "2025-08-10T10:30:00Z"
  }
]

Get Reactions

GET /workbooks/{workbook_id}/reactions

Retrieve all reactions from the collected data.

Response:

[  {    "reaction_type": "like",    "author": {      "name": "Bob Wilson",      "profile_url": "https://linkedin.com/in/bobwilson"    }  }]

Reaction Types:

  • like - Standard like

  • love - Love reaction

  • celebrate - Celebrate reaction

  • support - Support reaction

  • insightful - Insightful reaction

  • funny - Funny reaction

User Info

Get Current User

GET /me

Get information about the authenticated user.

Response:

{
  "id": "507f1f77bcf86cd799439013",
  "email": "user@example.com",
  "name": "API User"
}

Field Selection Logic

When using the fields parameter with contacts:

Automatic Field Inclusion:

  • Requesting stats.X fields individually fetches only those stats

  • Requesting both stats and stats.X fetches the complete stats object

Stats Field Priority:

  • stats alone β†’ Complete stats object

  • stats.comments,stats.reactions β†’ Only specified stats

  • stats,stats.comments β†’ Complete stats object (individual fields ignored)