This skill provides a reliable workflow to interact with Sure's API.
Use this skill for:
Do not use this skill for:
Follow these rules strictly to maximize compatibility:
curl requests against $SURE_BASE_URL using X-Api-Key.docs/) may reference additional URLs and env vars. These flows run only when the user explicitly requests them and never during normal API usage. .curl for core operations.SURE_BASE_URL has no scheme, normalize to http:// before use.page and per_page.Required variables:
bash
export SURE_API_KEY="YOUR_API_KEY"
export SURE_BASE_URL="https://app.sure.am"
Optional sensitive variables used only for specific self-hosted or external-assistant scenarios:
bash
# External assistant validation (optional)
export MCP_API_TOKEN="..."
export MCP_USER_EMAIL="you@example.com"
export EXTERNAL_ASSISTANT_URL="https://your-agent/v1/chat/completions"
export EXTERNAL_ASSISTANT_TOKEN="..."
# Self-hosting bootstrap (optional)
export SECRET_KEY_BASE="..."
export POSTGRES_PASSWORD="..."
These optional variables are intentionally not listed in metadata.clawdbot.requires.env because the core skill runtime does not require them.
Do not request or provide these optional secrets for normal API usage.
Use them only when the user explicitly asks to run self-hosting or external-assistant validation flows.
Validation check:
bash
curl --silent --show-error --fail \
--request GET \
--url "$SURE_BASE_URL/api/v1/accounts?page=1&per_page=1" \
--header "X-Api-Key: $SURE_API_KEY"
If this fails:
All requests must include:
bash
--header "X-Api-Key: $SURE_API_KEY"
List accounts:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/accounts?page=1&per_page=25" \
--header "X-Api-Key: $SURE_API_KEY"
List categories:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/categories" \
--header "X-Api-Key: $SURE_API_KEY"
Retrieve category:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/categories/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
List chats:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/chats" \
--header "X-Api-Key: $SURE_API_KEY"
Create chat:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/chats" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"title": "Monthly budget review",
"message": "Summarize my spending trends.",
"model": "default"
}'
Retrieve chat:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/chats/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
Update chat:
bash
curl --request PATCH \
--url "$SURE_BASE_URL/api/v1/chats/{id}" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"title": "Updated chat title"
}'
Delete chat:
bash
curl --request DELETE \
--url "$SURE_BASE_URL/api/v1/chats/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
Create chat message:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/chats/{chat_id}/messages" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"content": "What changed this month vs last month?",
"model": "default"
}'
Retry last assistant response:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/chats/{chat_id}/messages/retry" \
--header "X-Api-Key: $SURE_API_KEY"
List imports:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/imports" \
--header "X-Api-Key: $SURE_API_KEY"
Create import:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/imports" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"raw_file_content": "date,amount,name\n2026-01-01,25.00,Coffee",
"type": "TransactionImport",
"account_id": "<account_id>",
"publish": "true",
"date_col_label": "date",
"amount_col_label": "amount",
"name_col_label": "name",
"category_col_label": "category",
"tags_col_label": "tags",
"notes_col_label": "notes",
"date_format": "YYYY-MM-DD",
"number_format": "1,234.56",
"signage_convention": "inflows_positive",
"col_sep": ","
}'
Retrieve import:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/imports/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
List tags:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/tags" \
--header "X-Api-Key: $SURE_API_KEY"
Create tag:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/tags" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"tag": {
"name": "Travel",
"color": "#3B82F6"
}
}'
Retrieve tag:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/tags/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
Update tag:
bash
curl --request PATCH \
--url "$SURE_BASE_URL/api/v1/tags/{id}" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"tag": {
"name": "Travel Updated",
"color": "#2563EB"
}
}'
Delete tag:
bash
curl --request DELETE \
--url "$SURE_BASE_URL/api/v1/tags/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
List transactions:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/transactions?page=1&per_page=25" \
--header "X-Api-Key: $SURE_API_KEY"
Create transaction:
bash
curl --request POST \
--url "$SURE_BASE_URL/api/v1/transactions" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"transaction": {
"account_id": "<account_id>",
"date": "2026-03-01",
"amount": 123.45,
"name": "Groceries",
"description": "Weekly grocery shopping",
"notes": "",
"currency": "USD",
"category_id": "<category_id>",
"merchant_id": "<merchant_id>",
"nature": "expense",
"tag_ids": ["<tag_id>"]
}
}'
Retrieve transaction:
bash
curl --request GET \
--url "$SURE_BASE_URL/api/v1/transactions/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
Update transaction:
bash
curl --request PATCH \
--url "$SURE_BASE_URL/api/v1/transactions/{id}" \
--header "Content-Type: application/json" \
--header "X-Api-Key: $SURE_API_KEY" \
--data '{
"transaction": {
"name": "Groceries - updated",
"amount": 130.00,
"notes": "adjusted amount"
}
}'
Delete transaction:
bash
curl --request DELETE \
--url "$SURE_BASE_URL/api/v1/transactions/{id}" \
--header "X-Api-Key: $SURE_API_KEY"
When asked to perform analytics:
When asked to mutate data:
Scope note: The commands below fetch compose files from the Sure project repository on GitHub. Review any downloaded file before running
docker compose up. These flows are optional and only relevant when the user explicitly requests self-hosting setup.
For Docker-based self-hosting:
latest and stable.http://localhost:3000.For AI and external assistant mode:
For HTTP 401 or 403:
SURE_API_KEY.For HTTP 404:
For HTTP 422:
For network errors:
docker compose ps status.Use the supporting files in this skill package:
docs/openclaw-compatibility.mddocs/api-playbooks.mddocs/self-hosting-quickstart.md