> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trytikt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Objects

> Every field of every object TIKT sends: its type, and when it is null.

Field names are in English and `snake_case`. Identifiers are UUIDs. Dates are ISO 8601, in UTC, to the second (`2026-10-06T20:03:57Z`). A field without a value is `null` and an empty list is `[]`: a field is never missing, except the three post-event blocks of a [post](#post). Every object is sent **as it is when the event is sent**.

Never sent: the raw data TIKT reads, the names of the services it uses, the scoring model, costs, the people TIKT processed who did not become leads, secrets.

## Lead

A person scored against your ICP, with their full profile and their company. It travels in every lead and list event, and in `lead.matched`.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The lead's identifier in TIKT. |
| `status` | string | `active`, or `bad_fit` when discarded. `client`, `snoozed` and `done` are reserved. |
| `score` | integer or null | How many ICP criteria the person meets, from 0 to 5. |
| `score_max` | integer | Always 5. |
| `fit_band` | string or null | `strong`, `good`, `weak` or `excluded`. |
| `criteria` | array of objects | One entry per ICP criterion. |
| `criteria[].key` | string | `job_role`, `location`, `company_type`, `company_size` or `industry`. |
| `criteria[].label` | string | The criterion's name, as on your ICP page. |
| `criteria[].mode` | string | `strict` (required) or `weighted`. |
| `criteria[].verdict` | string | `yes`, `no` or `unknown`. |
| `criteria[].justification` | string or null | Why, in one sentence. In English; in French for leads scored before September 23, 2026. |
| `disqualifiers` | array of strings | The exclusions that apply to this lead; empty when none. |
| `summary` | string or null | The scoring summary, in a sentence or two. |
| `scored_at` | date-time or null | When the lead was last scored. |
| `scoring_version` | string or null | The version of the scoring rules, for example `criteria-v2-en`. |
| `icp_version_id` | uuid or null | The ICP version the lead was scored against. |
| `engagement_count` | integer | All the person's reactions and comments on your tracked profiles' posts, counted when the event is sent. Their comments on their own posts never count. |
| `reaction_count` | integer | Of which reactions. |
| `comment_count` | integer | Of which comments. |
| `signals` | array of objects | The 20 most recent engagements, newest first: each a [signal](#signal) without its `kol` (its post carries it). |
| `first_seen_at` | date-time or null | When TIKT first saw the person. |
| `last_engagement_at` | date-time or null | The person's most recent engagement, counted when the event is sent. |
| `status_changed_at` | date-time or null | When the status last changed. |
| `lists` | array of objects | The lists the lead is in. |
| `lists[].id` | uuid | The list. |
| `lists[].name` | string | Its name. |
| `lists[].added_at` | date-time | When the lead was added to it. |
| `handled` | boolean | `true` when the lead is in at least one list. |
| `console_url` | string | The lead in the TIKT console. |
| `person` | object | The person, below. |
| `person.id` | uuid | The person's identifier in TIKT. |
| `person.linkedin_url` | string or null | Their LinkedIn profile. |
| `person.linkedin_member_id` | string or null | LinkedIn's member identifier (`ACoAA…`). |
| `person.full_name` | string or null | Their full name. |
| `person.first_name` | string or null | First name. |
| `person.last_name` | string or null | Last name. |
| `person.headline` | string or null | The headline under their name on LinkedIn. |
| `person.about` | string or null | Their About section. |
| `person.picture_url` | string or null | Their profile picture. The address expires after about 18 days: copy the image if you keep it. |
| `person.location` | object | Where they are. |
| `person.location.country` | string or null | Country. |
| `person.location.country_code` | string or null | Two-letter country code. |
| `person.location.region` | string or null | Region or state. |
| `person.location.city` | string or null | City. |
| `person.current_position` | object | Their current job. |
| `person.current_position.title` | string or null | Job title. |
| `person.current_position.company_name` | string or null | Company name. |
| `person.current_position.company_linkedin_url` | string or null | The company's LinkedIn page. |
| `person.seniority` | string or null | Their seniority level. |
| `person.department` | string or null | Their department. |
| `person.positions` | array of objects | Their experience, current job first. |
| `person.positions[].title` | string or null | Job title. |
| `person.positions[].company_name` | string or null | Company. |
| `person.positions[].company_linkedin_url` | string or null | The company's LinkedIn page. |
| `person.positions[].company_linkedin_id` | string or null | LinkedIn's company identifier. |
| `person.positions[].start_date` | string or null | `YYYY-MM`, or `YYYY`. |
| `person.positions[].end_date` | string or null | `null` for a current job. |
| `person.positions[].is_current` | boolean | `true` for a current job. |
| `person.positions[].duration` | string or null | As LinkedIn writes it, for example `2 yrs 6 mos`. |
| `person.positions[].location` | string or null | Where. |
| `person.positions[].employment_type` | string or null | Full-time, contract… |
| `person.positions[].workplace_type` | string or null | On-site, hybrid or remote. |
| `person.positions[].description` | string or null | The description they wrote. |
| `person.education` | array of objects | Their education. Empty for people read before September 28, 2026. |
| `person.education[].school_name` | string or null | School. |
| `person.education[].school_linkedin_url` | string or null | The school's LinkedIn page. |
| `person.education[].degree` | string or null | Degree. |
| `person.education[].field_of_study` | string or null | Field of study. |
| `person.education[].start_year` | integer or null | First year. |
| `person.education[].end_year` | integer or null | Last year. |
| `person.languages` | array of objects | Languages. |
| `person.languages[].name` | string | Language. |
| `person.languages[].proficiency` | string or null | Proficiency, as LinkedIn writes it. |
| `person.skills` | array of strings | Skills. |
| `person.followers_count` | integer or null | LinkedIn followers. |
| `person.connections_count` | integer or null | LinkedIn connections. |
| `person.flags` | object | What their profile shows. |
| `person.flags.open_to_work` | boolean | Open to work. |
| `person.flags.is_hiring` | boolean | Hiring. |
| `person.flags.is_premium` | boolean | LinkedIn Premium. |
| `person.flags.is_influencer` | boolean | LinkedIn Top Voice. |
| `person.flags.is_verified` | boolean | Verified identity. |
| `person.flags.is_creator` | boolean | Creator mode. |
| `person.profile_language` | string or null | The profile's language, for example `en`. |
| `person.profile_country` | string or null | The profile's country, two letters. |
| `person.websites` | array of strings | The websites on their profile. |
| `person.linkedin_member_since` | date-time or null | When they joined LinkedIn. |
| `person.profile_read_at` | date-time or null | When TIKT last read their profile. |
| `company` | object or null | Their current company, below; `null` when unknown. |
| `company.id` | uuid | The company's identifier in TIKT. |
| `company.linkedin_company_id` | string or null | LinkedIn's company identifier. |
| `company.name` | string or null | Name. |
| `company.universal_name` | string or null | The company's handle in its LinkedIn address. |
| `company.linkedin_url` | string or null | Its LinkedIn page. |
| `company.website` | string or null | Website. |
| `company.domain` | string or null | Website domain. |
| `company.logo_url` | string or null | Logo. The address can expire: copy the image if you keep it. |
| `company.tagline` | string or null | Tagline. |
| `company.about` | string or null | About section. |
| `company.industry` | string or null | Industry, as LinkedIn names it. |
| `company.specialties` | array of strings | Specialties. |
| `company.company_size` | string or null | LinkedIn's size range, for example `201-500 employees`. |
| `company.employees_count` | integer or null | Employees on LinkedIn. |
| `company.organization_type` | string or null | `Privately Held`, `Public Company`, `Partnership`… |
| `company.founded_year` | integer or null | Year founded. |
| `company.followers_count` | integer or null | LinkedIn followers. |
| `company.headquarters` | string or null | Headquarters. |
| `company.country_code` | string or null | Country, two letters. |
| `company.locations` | array of strings | Its addresses. |
| `company.enriched_at` | date-time or null | When TIKT last read the company page. |

<Accordion title="Example: lead">
  ```json theme={null}
  {
    "id": "99ccbeee-4fe5-4bc4-8244-8a8c9ead0af7",
    "status": "active",
    "score": 4,
    "score_max": 5,
    "fit_band": "good",
    "criteria": [
      {
        "key": "job_role",
        "label": "Job title",
        "mode": "weighted",
        "verdict": "no",
        "justification": "Chief Financial Officer is not one of the job roles this ICP targets."
      },
      {
        "key": "location",
        "label": "Location",
        "mode": "strict",
        "verdict": "yes",
        "justification": "Boston, United States is inside the target locations."
      },
      {
        "key": "company_type",
        "label": "Company type",
        "mode": "weighted",
        "verdict": "yes",
        "justification": "Northwind Analytics is privately held, a target company type."
      },
      {
        "key": "company_size",
        "label": "Company size",
        "mode": "weighted",
        "verdict": "yes",
        "justification": "Northwind Analytics has 340 employees, inside the 50 to 1,000 range."
      },
      {
        "key": "industry",
        "label": "Industry",
        "mode": "weighted",
        "verdict": "yes",
        "justification": "Northwind Analytics works in Software Development, a target industry."
      }
    ],
    "disqualifiers": [],
    "summary": "The location, company type, company size, industry match; the job title does not.",
    "scored_at": "2026-10-06T08:10:06Z",
    "scoring_version": "criteria-v2-en",
    "icp_version_id": "e18507fb-b82e-48a9-8616-dbe2793d98dc",
    "engagement_count": 1,
    "reaction_count": 0,
    "comment_count": 1,
    "signals": [
      {
        "id": "9cb30a4f-f1a9-4961-8601-dddcde91d304",
        "kind": "comment",
        "reaction_type": null,
        "text": "PLAYBOOK, please. We are rebuilding our close this quarter.",
        "url": "https://www.linkedin.com/feed/update/urn:li:activity:7435354408163047384?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7435354408163047384%2C7412420975674115234%29",
        "likes": 0,
        "replies": 0,
        "is_pinned": false,
        "is_edited": false,
        "occurred_at": "2026-10-06T06:46:51Z",
        "captured_at": "2026-10-06T08:04:25Z",
        "post": {
          "id": "4e29e2ca-1f75-4d6f-8f23-692956d9c949",
          "linkedin_post_id": "7435354408163047384",
          "urn": "urn:li:activity:7435354408163047384",
          "url": "https://www.linkedin.com/posts/avery-collins-example_the-finance-playbook-activity-7435354408163047384-Ab1c",
          "author": {
            "type": "profile",
            "name": "Avery Collins",
            "public_id": "avery-collins-example",
            "linkedin_url": "https://www.linkedin.com/in/avery-collins-example",
            "avatar_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/profile-displayphoto-scale_400_400/0/avery-collins-example"
          },
          "text": "The finance playbook we wish we had on day one is finally public. Twenty templates across five stages: plan, operate, close, decide, report. Comment PLAYBOOK and I'll send it over 👇",
          "hashtags": [],
          "media_type": "image",
          "media": {
            "images": [
              "https://media.licdn.com/dms/image/v2/EXAMPLE/feedshare-shrink_1280/0/the-finance-playbook-1-example"
            ],
            "videos": []
          },
          "external_links": [
            "https://www.example.com/the-finance-playbook"
          ],
          "is_repost": false,
          "posted_at": "2026-10-06T07:01:57Z",
          "counters": {
            "reactions": 214,
            "comments": 187,
            "checked_at": "2026-10-06T20:02:27Z"
          },
          "tracking_status": "hot",
          "source": "auto",
          "kol": {
            "id": "b2905fad-ec45-4372-8785-cb41295dafb6",
            "name": "Avery Collins",
            "relationship": "competitor",
            "linkedin_url": "https://www.linkedin.com/in/avery-collins-example/"
          },
          "console_url": "https://app.trytikt.com/posts?post=4e29e2ca-1f75-4d6f-8f23-692956d9c949"
        }
      }
    ],
    "first_seen_at": "2026-10-06T08:10:06Z",
    "last_engagement_at": "2026-10-06T06:46:51Z",
    "status_changed_at": null,
    "lists": [
      {
        "id": "61f45cf5-c72b-466c-8fcb-a9d39f5b80f5",
        "name": "Hot CFOs",
        "added_at": "2026-10-06T08:12:31Z"
      }
    ],
    "handled": true,
    "console_url": "https://app.trytikt.com/leads?lead=99ccbeee-4fe5-4bc4-8244-8a8c9ead0af7",
    "person": {
      "id": "5e8dc4b8-ae54-4c26-8da7-733b0cea5d96",
      "linkedin_url": "https://www.linkedin.com/in/jordan-rivera-example/",
      "linkedin_member_id": "ACoAAExamplef83be5u9p2wy6lemxbrkkf9pj4zz",
      "full_name": "Jordan Rivera",
      "first_name": "Jordan",
      "last_name": "Rivera",
      "headline": "Chief Financial Officer at Northwind Analytics",
      "about": "Finance leader for software companies. I help teams plan, close and report with fewer spreadsheets and better numbers.",
      "picture_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/profile-displayphoto-shrink_800_800/0/jordan-rivera-example",
      "location": {
        "country": "United States",
        "country_code": "US",
        "region": "Massachusetts",
        "city": "Boston"
      },
      "current_position": {
        "title": "Chief Financial Officer",
        "company_name": "Northwind Analytics",
        "company_linkedin_url": "https://www.linkedin.com/company/northwind-analytics-example/"
      },
      "seniority": "manager",
      "department": null,
      "positions": [
        {
          "title": "Chief Financial Officer",
          "company_name": "Northwind Analytics",
          "company_linkedin_url": "https://www.linkedin.com/company/northwind-analytics-example/",
          "company_linkedin_id": "76485923",
          "start_date": "2026-03",
          "end_date": null,
          "is_current": true,
          "duration": "8 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "VP Finance",
          "company_name": "Contoso Finance",
          "company_linkedin_url": "https://www.linkedin.com/company/contoso-finance-example/",
          "company_linkedin_id": "71047941",
          "start_date": "2021-02",
          "end_date": "2023-03",
          "is_current": false,
          "duration": "3 yrs 2 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Head of FP&A",
          "company_name": "Fabrikam Systems",
          "company_linkedin_url": "https://www.linkedin.com/company/fabrikam-systems-example/",
          "company_linkedin_id": "73802068",
          "start_date": "2018-03",
          "end_date": "2020-04",
          "is_current": false,
          "duration": "4 yrs 3 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Finance Manager",
          "company_name": "Adatum Corporation",
          "company_linkedin_url": "https://www.linkedin.com/company/adatum-corporation-example/",
          "company_linkedin_id": "77900417",
          "start_date": "2015-04",
          "end_date": "2017-05",
          "is_current": false,
          "duration": "2 yrs 4 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Senior Financial Analyst",
          "company_name": "Proseware",
          "company_linkedin_url": "https://www.linkedin.com/company/proseware-example/",
          "company_linkedin_id": "72023370",
          "start_date": "2012-05",
          "end_date": "2014-06",
          "is_current": false,
          "duration": "3 yrs 5 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Financial Analyst",
          "company_name": "Tailspin Data",
          "company_linkedin_url": "https://www.linkedin.com/company/tailspin-data-example/",
          "company_linkedin_id": "71525700",
          "start_date": "2009-06",
          "end_date": "2011-07",
          "is_current": false,
          "duration": "4 yrs 6 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Audit Associate",
          "company_name": "Woodgrove Consulting",
          "company_linkedin_url": "https://www.linkedin.com/company/woodgrove-consulting-example/",
          "company_linkedin_id": "75806787",
          "start_date": "2006-07",
          "end_date": "2008-08",
          "is_current": false,
          "duration": "2 yrs 7 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        },
        {
          "title": "Finance Intern",
          "company_name": "Adatum Corporation",
          "company_linkedin_url": "https://www.linkedin.com/company/adatum-corporation-example/",
          "company_linkedin_id": "77900417",
          "start_date": "2003-08",
          "end_date": "2005-09",
          "is_current": false,
          "duration": "3 yrs 8 mos",
          "location": null,
          "employment_type": null,
          "workplace_type": null,
          "description": null
        }
      ],
      "education": [
        {
          "school_name": "Example State University",
          "school_linkedin_url": null,
          "degree": "Master of Science",
          "field_of_study": "Finance",
          "start_year": 2006,
          "end_year": 2010
        },
        {
          "school_name": "Riverside College",
          "school_linkedin_url": null,
          "degree": "Bachelor of Arts",
          "field_of_study": "Economics",
          "start_year": 2004,
          "end_year": 2006
        }
      ],
      "languages": [
        {
          "name": "English",
          "proficiency": "Native or bilingual proficiency"
        },
        {
          "name": "Spanish",
          "proficiency": "Elementary proficiency"
        }
      ],
      "skills": [
        "Financial planning",
        "Forecasting"
      ],
      "followers_count": 582,
      "connections_count": 574,
      "flags": {
        "open_to_work": false,
        "is_hiring": false,
        "is_premium": true,
        "is_influencer": false,
        "is_verified": true,
        "is_creator": false
      },
      "profile_language": "en",
      "profile_country": "US",
      "websites": [],
      "linkedin_member_since": "2009-05-14T00:00:00Z",
      "profile_read_at": "2026-10-06T08:05:12Z"
    },
    "company": {
      "id": "3c998b48-26a4-493c-804b-81d7e5e7a9ae",
      "linkedin_company_id": "76485923",
      "name": "Northwind Analytics",
      "universal_name": "northwind-analytics",
      "linkedin_url": "https://www.linkedin.com/company/northwind-analytics-example",
      "website": "https://www.northwind-analytics.example/",
      "domain": "northwind-analytics.example",
      "logo_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/company-logo_200_200/0/northwind-analytics-example",
      "tagline": "Planning and forecasting software for finance teams.",
      "about": "Northwind Analytics builds planning and forecasting software for mid-size finance teams. Customers close their books faster and plan with live numbers instead of spreadsheets.",
      "industry": "Software Development",
      "specialties": [],
      "company_size": "201-500 employees",
      "employees_count": 340,
      "organization_type": "Privately Held",
      "founded_year": 2014,
      "followers_count": 12840,
      "headquarters": "Boston, Massachusetts",
      "country_code": "US",
      "locations": [
        "100 Example Street, Boston, Massachusetts 02110, US"
      ],
      "enriched_at": "2026-10-01T21:43:10Z"
    }
  }
  ```
</Accordion>

## Signal

An engagement: what a person did on a post of a profile you track.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The engagement's identifier in TIKT. |
| `kind` | string | `reaction` or `comment`. |
| `reaction_type` | string or null | `LIKE`, `PRAISE`, `EMPATHY`, `INTEREST`, `APPRECIATION` or `ENTERTAINMENT`; `null` for a comment. |
| `text` | string or null | The comment; `null` for a reaction. |
| `url` | string or null | The comment on LinkedIn; `null` for a reaction. |
| `likes` | integer | Likes on the comment; 0 for a reaction. |
| `replies` | integer | Replies to the comment; 0 for a reaction. |
| `is_pinned` | boolean | The comment is pinned. |
| `is_edited` | boolean | The comment was edited. |
| `occurred_at` | date-time or null | When the comment was written. A reaction has none: LinkedIn doesn't date reactions. |
| `captured_at` | date-time | When TIKT saw it. |
| `post` | object | The [post](#post), without its three post-event blocks. |
| `kol` | object | The tracked profile who wrote the post: `{id, name, relationship, linkedin_url}`. Absent from `lead.signals`. |

<Accordion title="Example: signal">
  ```json theme={null}
  {
    "id": "9cb30a4f-f1a9-4961-8601-dddcde91d304",
    "kind": "comment",
    "reaction_type": null,
    "text": "PLAYBOOK, please. We are rebuilding our close this quarter.",
    "url": "https://www.linkedin.com/feed/update/urn:li:activity:7435354408163047384?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7435354408163047384%2C7412420975674115234%29",
    "likes": 0,
    "replies": 0,
    "is_pinned": false,
    "is_edited": false,
    "occurred_at": "2026-10-06T06:46:51Z",
    "captured_at": "2026-10-06T08:04:25Z",
    "post": {
      "id": "4e29e2ca-1f75-4d6f-8f23-692956d9c949",
      "linkedin_post_id": "7435354408163047384",
      "urn": "urn:li:activity:7435354408163047384",
      "url": "https://www.linkedin.com/posts/avery-collins-example_the-finance-playbook-activity-7435354408163047384-Ab1c",
      "author": {
        "type": "profile",
        "name": "Avery Collins",
        "public_id": "avery-collins-example",
        "linkedin_url": "https://www.linkedin.com/in/avery-collins-example",
        "avatar_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/profile-displayphoto-scale_400_400/0/avery-collins-example"
      },
      "text": "The finance playbook we wish we had on day one is finally public. Twenty templates across five stages: plan, operate, close, decide, report. Comment PLAYBOOK and I'll send it over 👇",
      "hashtags": [],
      "media_type": "image",
      "media": {
        "images": [
          "https://media.licdn.com/dms/image/v2/EXAMPLE/feedshare-shrink_1280/0/the-finance-playbook-1-example"
        ],
        "videos": []
      },
      "external_links": [
        "https://www.example.com/the-finance-playbook"
      ],
      "is_repost": false,
      "posted_at": "2026-10-06T07:01:57Z",
      "counters": {
        "reactions": 214,
        "comments": 187,
        "checked_at": "2026-10-06T20:02:27Z"
      },
      "tracking_status": "hot",
      "source": "auto",
      "kol": {
        "id": "b2905fad-ec45-4372-8785-cb41295dafb6",
        "name": "Avery Collins",
        "relationship": "competitor",
        "linkedin_url": "https://www.linkedin.com/in/avery-collins-example/"
      },
      "console_url": "https://app.trytikt.com/posts?post=4e29e2ca-1f75-4d6f-8f23-692956d9c949"
    },
    "kol": {
      "id": "b2905fad-ec45-4372-8785-cb41295dafb6",
      "name": "Avery Collins",
      "relationship": "competitor",
      "linkedin_url": "https://www.linkedin.com/in/avery-collins-example/"
    }
  }
  ```
</Accordion>

## Post

A LinkedIn post of a profile you track.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The post's identifier in TIKT. |
| `linkedin_post_id` | string | LinkedIn's activity number. |
| `urn` | string | `urn:li:activity:…`. |
| `url` | string | The post on LinkedIn. |
| `author` | object | Who published it. |
| `author.type` | string | `profile` or `company`. |
| `author.name` | string or null | Name. |
| `author.public_id` | string or null | The handle in their LinkedIn address. |
| `author.linkedin_url` | string or null | Their LinkedIn page. |
| `author.avatar_url` | string or null | Their picture. The address expires. |
| `text` | string or null | The full text. |
| `hashtags` | array of strings | Hashtags. |
| `media_type` | string or null | The kind of media, for example `image`. |
| `media` | object | Its images and videos. |
| `media.images` | array of strings | Image addresses. They expire after 7 to 18 days: copy the files if you keep them. |
| `media.videos` | array of strings | Video addresses, which expire the same way. |
| `external_links` | array of strings | Links in the post. |
| `is_repost` | boolean | A repost of someone else's post. |
| `posted_at` | date-time or null | When it was published. |
| `counters` | object | Its counts, as last checked. |
| `counters.reactions` | integer or null | Reactions. |
| `counters.comments` | integer or null | Comments. |
| `counters.checked_at` | date-time or null | When TIKT last checked them. |
| `tracking_status` | string | `hot`, `warm` or `closed`: how often TIKT checks it, or no longer. |
| `source` | string | `auto` (found by a cycle), `onboarding` or `manual` (added by hand). |
| `kol` | object | The tracked profile: `{id, name, relationship, linkedin_url}`. |
| `console_url` | string | The post in the TIKT console. |
| `harvest` | object | Post events only. Its harvest. |
| `harvest.state` | string | `harvesting`, `paused` or `closed`. |
| `harvest.paused` | boolean | A pause is set on this post. |
| `harvest.excluded_reason` | string or null | Why it isn't harvested: `post_paused`, `no_profile`, `profile_removed`, `profile_paused` or `published_before_resume`. |
| `performance_vs_usual` | number or null | Post events only. Its engagement compared to the profile's usual posts (2 means twice as much); `null` until the profile has 8 posts old enough to compare. |
| `yield` | object | Post events only. What it brought you. |
| `yield.people_captured` | integer | People processed from it. |
| `yield.leads_at_threshold` | integer | Of whom leads at or above your score threshold. |
| `yield.avg_score_at_threshold` | number or null | Their average score. |

<Accordion title="Example: post">
  ```json theme={null}
  {
    "id": "011c46fa-46b7-45d8-8911-df2f20ea4080",
    "linkedin_post_id": "7450227443607533490",
    "urn": "urn:li:activity:7450227443607533490",
    "url": "https://www.linkedin.com/posts/drew-harper-example_three-mistakes-finance-teams-activity-7450227443607533490-Ab1c",
    "author": {
      "type": "profile",
      "name": "Drew Harper",
      "public_id": "drew-harper-example",
      "linkedin_url": "https://www.linkedin.com/in/drew-harper-example",
      "avatar_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/profile-displayphoto-scale_400_400/0/drew-harper-example"
    },
    "text": "We reviewed 120 finance teams this year. The same three mistakes keep coming back. ➡️ Forecasts built once a quarter, then forgotten. ➡️ Tools bought without an owner. ➡️ Reports nobody reads. Here is the checklist we now use with every new team, step by step, with the questions we ask in the first week and the numbers we look at before anything else.",
    "hashtags": [],
    "media_type": "image",
    "media": {
      "images": [
        "https://media.licdn.com/dms/image/v2/EXAMPLE/feedshare-shrink_1280/0/three-mistakes-finance-teams-1-example"
      ],
      "videos": []
    },
    "external_links": [
      "https://www.example.com/three-mistakes-finance-teams"
    ],
    "is_repost": false,
    "posted_at": "2026-10-06T07:01:57Z",
    "counters": {
      "reactions": 214,
      "comments": 187,
      "checked_at": "2026-10-06T20:02:27Z"
    },
    "tracking_status": "hot",
    "source": "auto",
    "kol": {
      "id": "f6e53743-d2d1-499a-8735-487188ed4edd",
      "name": "Drew Harper",
      "relationship": "competitor",
      "linkedin_url": "https://www.linkedin.com/in/drew-harper-example/"
    },
    "console_url": "https://app.trytikt.com/posts?post=011c46fa-46b7-45d8-8911-df2f20ea4080",
    "harvest": {
      "state": "harvesting",
      "paused": false,
      "excluded_reason": null
    },
    "performance_vs_usual": 2.07,
    "yield": {
      "people_captured": 14,
      "leads_at_threshold": 0,
      "avg_score_at_threshold": null
    }
  }
  ```
</Accordion>

## Tracked profile

A LinkedIn profile you track (`kol` in the events). Inside a signal, a post and `kol.followers_recorded`, a short form travels: `{id, name, relationship, linkedin_url}`.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The tracked profile's identifier in TIKT. |
| `linkedin_url` | string | Its LinkedIn profile. |
| `public_identifier` | string or null | The handle in its LinkedIn address. |
| `name` | string or null | Name; `null` until its first read. |
| `avatar_url` | string or null | Picture. The address expires. |
| `relationship` | string | The relationship you chose, for example `competitor` or `influencer`. |
| `custom_label` | string or null | Your own label. |
| `state` | string | `active`, `paused` (scanning paused) or `archived` (no longer tracked). |
| `auto_harvest` | object | Automatic harvesting of its posts. |
| `auto_harvest.enabled` | boolean | On or off. |
| `auto_harvest.since` | date-time or null | After a pause, posts published from this date are harvested. |
| `onboarding_state` | string | `pending` until its first read, then `completed`. |
| `followers_count` | integer or null | Followers. |
| `posts_last_28_days` | integer or null | Posts in the last 28 days. |
| `posts_per_week` | number or null | Posts per week. |
| `typical_engagement` | number or null | Reactions and comments on a typical post. |
| `engagement_p90` | number or null | On its best posts (the 90th percentile). |
| `followers_gained_7d` | integer or null | Followers gained in 7 days. |
| `followers_gained_30d` | integer or null | Followers gained in 30 days; `null` until there are 30 days of history. |
| `last_post_at` | date-time or null | Its latest post. |
| `added_at` | date-time | When you started tracking it. |
| `console_url` | string | The profile in the TIKT console. |

<Accordion title="Example: tracked profile">
  ```json theme={null}
  {
    "id": "f6e53743-d2d1-499a-8735-487188ed4edd",
    "linkedin_url": "https://www.linkedin.com/in/drew-harper-example/",
    "public_identifier": "drew-harper-example",
    "name": "Drew Harper",
    "avatar_url": "https://media.licdn.com/dms/image/v2/EXAMPLE/profile-displayphoto-scale_400_400/0/drew-harper-example",
    "relationship": "competitor",
    "custom_label": null,
    "state": "active",
    "auto_harvest": {
      "enabled": true,
      "since": null
    },
    "onboarding_state": "completed",
    "followers_count": 44120,
    "posts_last_28_days": 12,
    "posts_per_week": 3,
    "typical_engagement": 61.5,
    "engagement_p90": 174,
    "followers_gained_7d": 96,
    "followers_gained_30d": 410,
    "last_post_at": "2026-10-06T07:01:57Z",
    "added_at": "2026-09-12T09:30:00Z",
    "console_url": "https://app.trytikt.com/watchlist?kol=f6e53743-d2d1-499a-8735-487188ed4edd"
  }
  ```
</Accordion>

## Cycle

One run of the agent for your workspace: the posts checked, the people harvested, the credits charged.

| Field | Type | Description |
| - | - | - |
| `id` | string | The run's identifier. |
| `status` | string | `completed` or `failed`. |
| `started_at` | date-time | Start. |
| `completed_at` | date-time | End. |
| `duration_seconds` | integer or null | Duration. |
| `posts_checked` | integer | Posts whose counts were checked. |
| `posts_harvested` | integer | Posts harvested. |
| `people_processed` | integer | People processed. |
| `credits_charged` | integer | Credits charged. |
| `credits_remaining` | integer or null | Credits you can still spend, when the event is sent. |
| `leads_written` | integer | Leads created or updated. |
| `errors` | array of objects | Empty when `completed`. Each `{step, message}`: `step` is `discovery` or `harvest`; `message` says what happened and what was not charged. |

<Accordion title="Example: cycle">
  ```json theme={null}
  {
    "id": "run_18vjkk1eipydcd7vvi4e81nn3z",
    "status": "completed",
    "started_at": "2026-10-06T20:02:33Z",
    "completed_at": "2026-10-06T20:03:57Z",
    "duration_seconds": 85,
    "posts_checked": 2,
    "posts_harvested": 2,
    "people_processed": 16,
    "credits_charged": 11,
    "credits_remaining": 3808,
    "leads_written": 9,
    "errors": []
  }
  ```
</Accordion>

## Credits

Your credits for the current billing period. One credit is one person processed.

| Field | Type | Description |
| - | - | - |
| `total` | integer | Credits of the period. |
| `used` | integer | Used. |
| `reserved` | integer | Set aside for harvests in progress. |
| `remaining` | integer | `total` minus `used`. |
| `available` | integer | `remaining` minus `reserved`: what the agent can still spend. |
| `percent_used` | number | Percent used, to one decimal. |
| `period_start` | date-time or null | Start of the period. |
| `period_end` | date-time or null | End of the period. |
| `threshold` | integer | `credits.low` only: the threshold crossed, 80 or 90. |

<Accordion title="Example: credits">
  ```json theme={null}
  {
    "total": 10000,
    "used": 8050,
    "reserved": 0,
    "remaining": 1950,
    "available": 1950,
    "percent_used": 80.5,
    "period_start": "2026-08-31T15:02:42Z",
    "period_end": "2026-10-30T15:02:42Z",
    "threshold": 80
  }
  ```
</Accordion>

## ICP

A version of your ideal customer profile: what changes a lead's score.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | This version. |
| `created_at` | date-time | When it was saved. |
| `source` | string | How it was made. |
| `criteria` | object | What you target. |
| `criteria.job_roles` | array of strings | Job roles. |
| `criteria.seniorities` | array of strings | Seniority levels. |
| `criteria.departments` | array of strings | Departments. |
| `criteria.locations` | array of strings | Locations. |
| `criteria.excluded_locations` | array of strings | Locations excluded. |
| `criteria.industries` | array of strings | Industries. |
| `criteria.excluded_industries` | array of strings | Industries excluded. |
| `criteria.company_types` | array of strings | Company types. |
| `criteria.company_size` | object | Company size. |
| `criteria.company_size.min` | integer or null | Minimum employees. |
| `criteria.company_size.max` | integer or null | Maximum employees. |
| `modes` | object | For each criterion, `strict` (required) or `weighted`. |
| `modes.job_role` | string | Job role. |
| `modes.location` | string | Location. |
| `modes.company_type` | string | Company type. |
| `modes.company_size` | string | Company size. |
| `modes.industry` | string | Industry. |
| `exclusions` | object | Who is never a lead. |
| `exclusions.excluded_job_titles` | array of strings | Job titles excluded. |
| `exclusions.competitors` | array of strings | Competitors whose people are excluded. |
| `exclusions.custom` | array of strings | Your own exclusion rules, in plain words. |
| `exclusions.blocked_companies_count` | integer | Companies excluded (each one is a `blocklist.*` event). |
| `switches` | object | Two switches. |
| `switches.exclude_open_to_work` | boolean | Exclude people open to work. |
| `switches.exclude_students` | boolean | Exclude students. |

<Accordion title="Example: icp">
  ```json theme={null}
  {
    "id": "e18507fb-b82e-48a9-8616-dbe2793d98dc",
    "created_at": "2026-10-05T12:06:56Z",
    "source": "MANUAL",
    "criteria": {
      "job_roles": [
        "Chief Financial Officer",
        "VP Finance",
        "Head of Finance",
        "Finance Director",
        "Controller",
        "Head of FP&A",
        "CEO",
        "COO"
      ],
      "seniorities": [
        "CXO",
        "Director",
        "Owner",
        "VP"
      ],
      "departments": [
        "Finance",
        "Founder/Executive",
        "Operations"
      ],
      "locations": [
        "United States",
        "Canada",
        "United Kingdom"
      ],
      "excluded_locations": [],
      "industries": [
        "Software Development",
        "Financial Services",
        "IT Services and IT Consulting"
      ],
      "excluded_industries": [],
      "company_types": [
        "Partnership",
        "Privately Held",
        "Public Company"
      ],
      "company_size": {
        "min": 50,
        "max": 1000
      }
    },
    "modes": {
      "job_role": "weighted",
      "location": "strict",
      "company_type": "weighted",
      "company_size": "weighted",
      "industry": "weighted"
    },
    "exclusions": {
      "excluded_job_titles": [
        "Intern",
        "Student",
        "Trainee",
        "Apprentice"
      ],
      "competitors": [
        "Litware Labs",
        "Proseware",
        "Tailspin Data"
      ],
      "custom": [
        "Freelancers and independent consultants",
        "Agencies and service providers",
        "Companies that resell planning software"
      ],
      "blocked_companies_count": 6
    },
    "switches": {
      "exclude_open_to_work": true,
      "exclude_students": true
    }
  }
  ```
</Accordion>

## Destination

A place TIKT sends events to. Never a secret, never a header value.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The destination. |
| `name` | string | Its name. |
| `tool` | string | `webhook`, `n8n`, `make`, `zapier`, `clay` or `slack`. |
| `url` | string | Its address. For Slack, the origin followed by `/…`: a Slack address is itself a key. |
| `all_events` | boolean | Listens to all events, including the ones added later. |
| `events` | array of strings | The events it listens to, when `all_events` is false; it can be empty for a connection that only receives workflows. |
| `format` | string | `single` (one request per event) or `batch` (up to 100 per request). |
| `status` | string | `active`, `off` or `disabled` (turned off by TIKT). |
| `disabled_reason` | string or null | `failed_for_3_days` or `gone_410`. |
| `disabled_at` | date-time or null | When TIKT turned it off. |
| `api_version` | string | The version of the payloads it receives. |
| `created_at` | date-time | When it was created. |
| `slack` | object | Slack destinations only: `{channel, team}`. |
| `last_response_status` | integer or null | `webhook.endpoint_disabled` only: the last answer's status code. |

<Accordion title="Example: destination">
  ```json theme={null}
  {
    "id": "5651ac74-eb8b-465f-864d-52a81f285b80",
    "name": "n8n — hot leads",
    "tool": "n8n",
    "url": "https://n8n.example.com/webhook/tikt",
    "all_events": false,
    "events": [
      "lead.created",
      "lead.engaged_again",
      "list.lead_added"
    ],
    "format": "single",
    "status": "active",
    "disabled_reason": null,
    "disabled_at": null,
    "api_version": "2026-10-01",
    "created_at": "2026-10-06T22:30:00Z"
  }
  ```
</Accordion>

## Workflow

In `lead.matched` only: the workflow that matched, as it was at that moment. Never its filters or its actions.

| Field | Type | Description |
| - | - | - |
| `id` | uuid | The workflow. |
| `name` | string | Its name when the lead matched. |
| `reason` | string | `new` (a new lead), `came_back` (it engaged again), `rescored` (its score changed) or `past` (it already matched when the workflow was first turned on). |

<Accordion title="Example: workflow">
  ```json theme={null}
  {
    "id": "fa302bbc-65d8-49be-86a8-6abbfe4c20ae",
    "name": "Hot CFOs",
    "reason": "new"
  }
  ```
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.