Skip to content

Quickstart ​

This quickstart guide will help you get started with the Litebase API. Follow these steps to set up your environment and make your first API requests.

Introduction ​

Litebase is the platform for immutable, versioned data. Store key-value data with transactions. Stream events in real time. Query any state, anytime. Build resilient data-driven systems, effortlessly.

Prerequisites ​

Before you begin, make sure you have:

  1. A Litebase account (Apply for access at litebase.io if you don't have one)
  2. An API key from the Litebase dashboard

Setting Up Your Environment ​

To use the Litebase API, you'll need to export your API key as an environment variable. This allows you to securely use your API key in your requests without hardcoding it in your scripts.

For Unix-based systems (Linux, macOS):

sh
export LITEBASE_API_KEY=your_api_key_here

For Windows:

cmd
set LITEBASE_API_KEY=your_api_key_here

Making Your First API Requests ​

Now that you've set up your environment, let's make your first API requests using cURL.

Writing Data with KvWrite ​

Let's start by adding a new key-value pair to the database:

sh
curl --location 'https://api.litebase.io/sample/kv/write' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $LITEBASE_API_KEY" \
--data '[
    {
        "key": "city:1",
        "value": {
            "name": "Braavos"
        }
    }
]'

If successful, you should receive a response similar to:

json
{
    "$schema": "https://api.litebase.io/schemas/WriteResponse.json",
    "tx": 1,
    "duration": "3.370413ms"
}

Reading Data with KvRead ​

To retrieve the value you just set, use the following cURL command:

sh
curl --location 'https://api.litebase.io/sample/kv/read' \
--header "Authorization: Bearer $LITEBASE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "keys": ["city:1"]
}'

You should receive a response like this:

json
{
    "$schema": "https://api.litebase.io/schemas/ReadResponse.json",
    "tx": 1,
    "data": [
        {
            "key": "city:1",
            "tx": 1,
            "value": {
                "name": "Braavos"
            }
        }
    ],
    "duration": "378.06µs"
}

Listing Key-Value Pairs with KvScan ​

To get a list of all key-value pairs in your namespace, use the KvScan API:

sh
curl --location 'https://api.litebase.io/sample/kv/scan' \
--header "Authorization: Bearer $LITEBASE_API_KEY"

The response will look similar to:

json
{
    "$schema": "https://api.litebase.io/schemas/ScanResponse.json",
    "tx": 1,
    "data": [
        {
            "key": "city:1",
            "tx": 1,
            "value": {
                "name": "Braavos"
            }
        }
    ],
    "duration": "306.639µs"
}

Working with Transactions ​

Litebase supports transactions, allowing you to track changes over time.

Updating Existing Data ​

Let's update the "city:1" key with more information:

sh
curl --location 'https://api.litebase.io/sample/kv/write' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $LITEBASE_API_KEY" \
--data '[
    {
        "key": "city:1",
        "value": {
            "name": "Braavos",
            "continent": "Essos"
        }
    }
]'

Notice that the transaction number tx returned in response is increased:

json
{
    "$schema": "http://api.litebase.io/schemas/WriteResponse.json",
    "tx": 2,
    "duration": "49.505µs"
}

Listing Transactions ​

To view a list of all transactions in your namespace, use the TxList API:

sh
curl --location 'https://api.litebase.io/sample/tx' \
--header "Authorization: Bearer $LITEBASE_API_KEY"

The response will show all transactions and their associated data changes:

json
[
    {
        "tx": 2,
        "data": [
            {
                "key": "city:1",
                "value": {
                    "continent": "Essos",
                    "name": "Braavos"
                }
            }
        ]
    },
    {
        "tx": 1,
        "data": [
            {
                "key": "city:1",
                "value": {
                    "name": "Braavos"
                }
            }
        ]
    }
]

Reading Historical Data ​

By default, KvRead will return latest value of given key. You can read data from a specific transaction by including the tx field in your KvRead request:

sh
curl --location 'https://api.litebase.io/sample/kv/read' \
--header "Authorization: Bearer $LITEBASE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "tx": 1,
    "keys": ["city:1"]
}'

This allows you to compare the value of a key across different transactions.