Feb 24, 2026
Add additional insights into Kapa by pulling in your Linear tickets


Your Linear workspace is a goldmine of organisational knowledge — capturing the real-world decisions, solutions, and insights your teams generate every day. By bringing this rich context into Kapa, you can unlock a more powerful, informed AI assistant that goes beyond your documentation to deliver answers that truly reflect how your organisation works.
You can find the code for the exporter that we are going to be discussing on our GitHub: https://github.com/kapa-ai/data-exporters/tree/main/linear-exporter
Getting started
You'll need a few things to get started:
A Linear API key
A Linear Team ID
An S3 bucket (with any provider)
A Kapa account, with permissions to create a new data source
Pulling data from Linear
Step 1 is getting your data into Kapa is pulling this data from Linear. We want to grab this data from the Linear API, get the fields that are important to us, and then output this in a format that we can later get ingested into your Kapa project.
In our project, we use the linear_fetcher to pull in the last 180 days of tickets from a team within our Linear instance and output this as a json file for the next stage of the process. You'll need to create a .env file that contains your Linear keys, for example:
This will then be read into the linear_fetcher.py file when run. Once this script has been run, you will receive a json file containing your Linear ticket data:
linear_closed_tickets_<timestamp>_<timestamp>.json
Note, this will only retrieve completed and canceled tickets by default, to update this filter, modify line 105 of linear_fetcher.py to include new types:
Converting the data for Kapa
Now that we have the data from the Linear API, we need to convert this into a format that Kapa will understand. Using our linear_to_kapa.py file as a reference, we want to convert these files from the JSON format that we've saved them in in the step above into a directory of markdown files that can be uploaded to an S3 bucket that can then be ingested into Kapa. Two things will come out of this step:
A directory of markdown files ready to upload to an S3 bucket.
An
index.jsonfile that can be used to link back to the source files.
As Kapa can ingest markdown files, we are in a good place to continue to the next step of getting this data into Kapa itself.
Adding your content to Kapa
Now that you have a directory of markdown files, you'll want to make these accessible to Kapa by uploading them to an S3 bucket and connecting it to your Kapa project as a data source. Once uploaded, make a note of your credentials and the location within the bucket where the directory lives — you'll need these when configuring things on Kapa's side. You'll also want to place the index.json file in the same folder as the directory of markdown files containing your ticket information.
Next, head over to Kapa and create a new data source, selecting "S3 Bucket" as the type. Enter your credentials along with the bucket details to complete the setup. Once saved, the initial ingestion will begin and Kapa will start pulling in your Linear tickets.
Putting it all together
Now that you can fetch and ingest your data into Kapa, your Linear tickets should be accessible within your project. We recommend keeping this limited to internal projects to prevent ticket data from being exposed to external users — unless that fits your use case!
Ingesting your Linear tickets into Kapa is a great way to bring organisational knowledge into your project — your agents' responses can surface valuable troubleshooting information or solutions that haven't yet made it into your documentation. The process is straightforward and only requires a few steps, though you'll want to re-run it every 30 days or so to ensure you're working with the most up-to-date information.
We'd love to hear how you're using your Linear ticket data within Kapa — feel free to share with the Kapa team!

Turn your knowledge base into a production-ready AI assistant
Request a demo to try kapa.ai on your data sources today.
