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

# Using Chunkr AI SDK

Chunkr AI's SDK supports both synchronous and asynchronous usage patterns.
The same client class `Chunkr` can be used for both patterns, making it flexible for different application needs.
All methods exists in both synchronous and asynchronous versions.

## Synchronous Usage

For simple scripts or applications that don't require asynchronous operations, you can use the synchronous pattern:

<CodeGroup>
  ```python Python theme={"system"}
  from chunkr_ai import Chunkr

  # Initialize client
  chunkr = Chunkr()

  try:
      # Upload a file and wait for processing
      task = chunkr.upload("document.pdf")
      print(task.task_id)

      # Alternatively, create task without waiting - you will get back a task object without chunks
      task = chunkr.create_task("document.pdf")

      # Poll the task when ready - this will wait for the task to complete and return a task object with chunks
      task.poll()  
      print(task.output.chunks)
  finally:
      # Clean up when done
      chunkr.close()
  ```
</CodeGroup>

## Asynchronous Usage

For applications that benefit from asynchronous operations (like web servers or background tasks), you can use the async pattern:

<CodeGroup>
  ```python Python theme={"system"}
  from chunkr_ai import Chunkr
  import asyncio

  async def process_document():
      # Initialize client
      chunkr = Chunkr()

      try:
          # Upload a file and wait for processing
          task = await chunkr.upload("document.pdf")
          print(task.task_id)

          # Alternatively, create task without waiting - you will get back a task object without chunks
          task = await chunkr.create_task("document.pdf")

          # Poll the task when ready - this will wait for the task to complete and return a task object with chunks
          await task.poll()  
          print(task.output.chunks)
      finally:
          # Clean up when done
          chunkr.close()
  ```
</CodeGroup>
