# Quickstart

> From nothing to a created task in ten minutes — a token, your first call, a list, a create.

**What this is:** the shortest path to a working call. **When you need it:** first — every other page assumes you have done this once.

1.  ## Get a token
    
    In TasksMate, open [Developers → Tokens](https://tasksmate.indrasol.com/developers?dev=tokens) and choose **Create token**. Pick your organization and the scopes `tasks:read` and `tasks:write`. The token is shown **once** — copy it now, and set it in your shell:
    
    ```bash
    export TASKSMATE_TOKEN="<YOUR_TOKEN>"
    export TASKSMATE_API_URL="https://tasksmate-fdfsarhnf5gacfb7.eastus-01.azurewebsites.net"
    export TASKSMATE_ORG="O0020"
    ```
    
    The Python SDK and `tm` read the same variables. They are `0.x` pre-releases and not on PyPI yet — [install from the SDK](https://developers.tasksmate.indrasol.com/sdks/python/#install).
    
2.  ## Make your first call
    
    **curl**
    
    
    ```bash
    curl "$TASKSMATE_API_URL/v1/me" \
      -H "Authorization: Bearer $TASKSMATE_TOKEN"
    ```
    
    **Python**
    
    
    ```python
    from tasksmate import TasksMate
    
    tm = TasksMate()  # reads TASKSMATE_TOKEN and TASKSMATE_API_URL
    print(tm.me())
    ```
    
    **tm**
    
    
    ```bash
    tm me
    ```
    
    You get back who the token acts as and the organizations it can reach.
    
3.  ## List tasks
    
    **curl**
    
    
    ```bash
    curl "$TASKSMATE_API_URL/v1/tasks?org_id=O0020&limit=5" \
      -H "Authorization: Bearer $TASKSMATE_TOKEN"
    ```
    
    **Python**
    
    
    ```python
    page = tm.tasks.list(org_id="O0020", limit=5)
    for task in page.data:
        print(task.task_id, task.status, task.title)
    ```
    
    **tm**
    
    
    ```bash
    tm tasks list --org O0020 --limit 5
    ```
    
    Lists return `{data, next_cursor}`; [pagination and filters](https://developers.tasksmate.indrasol.com/guides/pagination-and-filters/) has the rest.
    
4.  ## Create one
    
    **curl**
    
    
    ```bash
    curl -X POST "$TASKSMATE_API_URL/v1/tasks" \
      -H "Authorization: Bearer $TASKSMATE_TOKEN" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{"org_id": "O0020", "title": "My first API task"}'
    ```
    
    **Python**
    
    
    ```python
    task = tm.tasks.create({"org_id": "O0020", "title": "My first API task"})
    print(task.task_id)
    ```
    
    **tm**
    
    
    ```bash
    tm tasks create --org O0020 --title "My first API task"
    ```
    
    The `Idempotency-Key` makes a retry safe — the same key never creates two tasks. [Idempotency and ETags](https://developers.tasksmate.indrasol.com/guides/idempotency-and-etags/) explains why. The SDK and `tm` send one for you.
    

You’re done.A token, a read, a list and a create — everything else builds on these.

[Next: webhooks →](https://developers.tasksmate.indrasol.com/guides/webhooks/)[The Python SDK](https://developers.tasksmate.indrasol.com/sdks/python/)

## More to read

-   [Authentication](https://developers.tasksmate.indrasol.com/guides/authentication/) — scopes, project-restricted tokens, service accounts.
-   [Errors](https://developers.tasksmate.indrasol.com/guides/errors/) — every problem type and what to do about it.
-   [API reference](https://developers.tasksmate.indrasol.com/reference/) — every operation.

---
Source: https://developers.tasksmate.indrasol.com/quickstart/
