Skip to main content

Quick Start Guide

Get your first ekoDB database running and make your first API call in under 5 minutes!

:::tip New to ekoDB? Read the Overview to learn what ekoDB is and why it's different. Ready to dive in? Let's get you up and running! :::

Step 1: Deploy Your Database (2 minutes)

  1. Sign up at app.ekodb.io
  2. Click "Create Deployment" at the top of the dashboard page: app.ekodb.io/dashboard
  3. Select your region (choose the region closest to your users)
  4. Choose a machine tier (start with the free tier for testing)
  5. Set your subdomain and environment:
    • Environment Type: development
    • Subdomain: my-first-db (or any unique name)
  6. Click Create Deployment

Your database will be ready in a few minutes. You'll receive an email once it's live.

Step 2: Your Database URL

Once properly up and running, your deployment's status will show as "Running". Your database URL will be:

https://my-first-db.development.{provider}.ekodb.net

Replace {provider} with your selected cloud provider (ex. "google").

:::info Viewing Your Deployments View all of your deployments at app.ekodb.io/deployments.

Click on your deployment to navigate to that deployment's information page.

That deployment's database URL can be found at the top under the subdomain (shown with "/api").

Here you can also find this deployment's API keys. You will need the Admin API key for the next step.

To copy the Admin API key: Select your deployment → "Keys" tab → Click "Load Keys" → Copy the Admin API key :::

Step 3: Get Your Access Token (30 seconds)

First, generate an access token using your API key:

use ekodb_client::Client;

let client = Client::builder()
.base_url("https://my-first-db.development.google.ekodb.net")
.api_key("YOUR_API_KEY")
.build()?;

// Token is automatically managed by the client

:::tip Save Your Token Save this token for subsequent requests. Tokens are valid for a limited time (default: 1 hour). Client libraries handle token refresh automatically. :::

Step 4: Insert Your First Record (1 minute)

Let's create a user record:

let result = client.insert("users", serde_json::json!({
"name": "Alice",
"email": "alice@example.com",
"age": 30,
"role": "developer"
})).await?;

println!("Record ID: {}", result.id);

:::tip Important The id returned is an encrypted record ID. Save this ID - you'll need it to fetch, update, or delete this specific record. :::

Step 5: Get a Record (30 seconds)

Retrieve the record you just created:

let record = client.get("users", &record_id).await?;

println!("{:?}", record);

Response (Default - Typed):

{
"id": {
"type": "String",
"value": "encrypted_record_id_here"
},
"name": {
"type": "String",
"value": "Alice"
},
"email": {
"type": "String",
"value": "alice@example.com"
},
"age": {
"type": "Integer",
"value": 30
},
"role": {
"type": "String",
"value": "developer"
}
}

:::info Typed Responses By default, ekoDB returns typed responses with type metadata. This provides type safety and explicit type information.

Want simpler JSON? You can switch to non-typed responses:

  • Via App: app.ekodb.io/deployments → Select your deployment → Configurations → Edit → Toggle "Use Typed Values"
  • Via API: PUT /api/config with {"use_typed_values": false}

Non-typed response example:

{
"id": "encrypted_record_id_here",
"name": "Alice",
"email": "alice@example.com",
"age": 30,
"role": "developer"
}

:::

Step 6: Query with Filter (30 seconds)

You can also query records using filters instead of IDs:

use ekodb_client::QueryBuilder;

let query = QueryBuilder::new().eq("name", "Alice").build();
let results = client.find("users", query, None).await?;

println!("{:?}", results);

Response (Typed):

{
"records": [
{
"id": {
"type": "String",
"value": "encrypted_record_id_here"
},
"name": {
"type": "String",
"value": "Alice"
},
"email": {
"type": "String",
"value": "alice@example.com"
},
"age": {
"type": "Integer",
"value": 30
},
"role": {
"type": "String",
"value": "developer"
}
}
],
"count": 1
}

Step 7: Update a Record (30 seconds)

Update Alice's role using the encrypted ID:

client.update("users", &record_id, serde_json::json!({
"role": "senior developer"
})).await?;

:::note Using Record IDs Replace {record_id} with the actual id from your insert response. This is the encrypted record ID that ekoDB uses to identify specific records. :::

While direct API calls work great, we recommend using our official client libraries for a better developer experience:

:::tip No Token Management Required Client libraries automatically handle token generation and refresh for you. Simply provide your API key once, and the client manages authentication behind the scenes! :::

cargo add ekodb_client
# Optional: Add tokio if using #[tokio::main] in your code
# cargo add tokio --features macros
use ekodb_client::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::builder()
.base_url("https://my-first-db.development.{provider}.ekodb.net")
.api_key("YOUR_API_KEY")
.build()?;

// Insert
let user = client.insert("users", serde_json::json!({
"name": "Bob",
"email": "bob@example.com",
"age": 25,
"role": "designer"
})).await?;

// Query
let users = client.find("users", serde_json::json!({
"filter": {
"type": "Condition",
"content": {
"field": "role",
"operator": "Eq",
"value": "designer"
}
}
})).await?;

println!("{:?}", users);
Ok(())
}

What You Just Learned

✅ How to deploy an ekoDB database
✅ How to insert records
✅ How to query data
✅ How to update records
✅ How to use client libraries

Next Steps

Now that you have ekoDB running, here's what to explore next:

📚 Learn by Example

GitHub Examples Repository - 129 in all languages:

  • Rust, Python, TypeScript, JavaScript, Go, Kotlin
  • Client library examples (using official SDKs) and direct HTTP examples (raw REST API calls)
  • CRUD operations, search, batch operations, functions, and more
  • Complete working code you can copy and run

Choose Your Path

Building a Web/Mobile App?Client Libraries Guide - Type-safe SDKs for your language

Using REST API Directly?Basic Operations - Complete API reference

Need Advanced Features?Batch Operations - High-performance bulk operations
Transactions - ACID-compliant multi-document transactions
Functions - Stored procedures

Building an AI Application?Vector Search & Embeddings - Semantic similarity search
Search - Full-text search capabilities

Want to Understand the Architecture?White Paper - Deep dive into ekoDB's design

Common Next Tasks

  1. Set up proper authentication: Authentication Guide
  2. Define schemas: Add validation and constraints to your collections
  3. Add indexes: Optimize query performance
  4. Enable WebSockets: Real-time data updates
  5. Set up Ripple: Multi-region replication

Need Help?


Ready to build something amazing? Let's go! 🚀