# Introduction



## Overview [#overview]

Acontext provides a REST API for building AI agents with persistent context.

<CardGroup cols="2">
  <Card title="REST API" icon="code" iconType="solid">
    RESTful endpoints with predictable URLs
  </Card>

  <Card title="OpenAPI 3.0" icon="file-code" iconType="solid">
    Full OpenAPI specification available
  </Card>

  <Card title="Multi-format Support" icon="layer-group" iconType="solid">
    OpenAI, Anthropic, Gemini, and native formats
  </Card>

  <Card title="Client SDKs" icon="puzzle-piece" iconType="solid">
    Python and TypeScript libraries
  </Card>
</CardGroup>

## Authentication [#authentication]

All API requests require a Bearer token in the `Authorization` header:

```bash
Authorization: Bearer YOUR_API_KEY
```

<Warning>
  Keep your API keys secure and never expose them in client-side code.
</Warning>

## Install SDKs [#install-sdks]

<CodeGroup>
  ```bash title="Python"
  pip install acontext
  ```

  ```bash title="TypeScript"
  npm install @acontext/acontext
  ```
</CodeGroup>

## Quick Start [#quick-start]

<CodeGroup>
  ```python title="Python"
  import os
  from acontext import AcontextClient

  # Initialize client
  client = AcontextClient(
      api_key=os.getenv("ACONTEXT_API_KEY"),
  )

  # If you're using self-hosted Acontext:
  # client = AcontextClient(
  #     base_url="http://localhost:8029/api/v1",
  #     api_key="sk-ac-your-root-api-bearer-token",
  # )

  # Create a session
  session = client.sessions.create()

  # Store a message
  client.sessions.store_message(
      session.id,
      blob={'role': 'user', 'content': 'How do I reset my password?'}
  )
  ```

  ```typescript title="TypeScript"
  import { AcontextClient } from '@acontext/acontext';

  // Initialize client
  const client = new AcontextClient({
      apiKey: process.env.ACONTEXT_API_KEY,
  });

  // If you're using self-hosted Acontext:
  // const client = new AcontextClient({
  //     baseUrl: "http://localhost:8029/api/v1",
  //     apiKey: "sk-ac-your-root-api-bearer-token",
  // });

  // Create a session
  const session = await client.sessions.create();

  // Store a message
  await client.sessions.storeMessage(
    session.id,
    { role: 'user', content: 'How do I reset my password?' }
  );
  ```
</CodeGroup>

## Core Concepts [#core-concepts]

<AccordionGroup>
  <Accordion title="Sessions" icon="messages">
    Sessions represent conversation threads with message history.
  </Accordion>

  <Accordion title="Disks" icon="hard-drive">
    Isolated storage groups for organizing files and artifacts within a project.
  </Accordion>

  <Accordion title="Tools" icon="wrench">
    Capabilities that AI agents can use. Manage and configure tools across your project.
  </Accordion>
</AccordionGroup>

## API Resources [#api-resources]

<CardGroup cols="2">
  <Card title="Sessions" icon="messages" href="#session">
    Handle conversations and messages
  </Card>

  <Card title="Disks" icon="hard-drive" href="#disk">
    Manage storage groups
  </Card>

  <Card title="Tools" icon="wrench" href="#tool">
    Configure agent capabilities
  </Card>
</CardGroup>

## Message Formats [#message-formats]

Acontext supports multiple message formats for compatibility:

* **OpenAI** - Compatible with OpenAI Chat Completion format (default)
* **Anthropic** - Compatible with Anthropic Messages format
* **Gemini** - Compatible with Google Gemini Messages format

Convert between formats when retrieving or storing messages using the `format` parameter.

## Community [#community]

<CardGroup cols="2">
  <Card title="GitHub" icon="github" href="https://github.com/memodb-io/Acontext">
    Report issues and contribute
  </Card>

  <Card title="Discord" icon="discord" href="https://discord.acontext.io">
    Join our community
  </Card>
</CardGroup>
