Asamano Logo

Asamano

v1.0 — Read-only

Asamano API

Connect Asamano to your favorite chatbot or AI assistant — like a Telegram bot, ChatGPT, or Claude — and just ask: "Where are my Christmas lights?" or "Which box has the kids' winter clothes?". The API lets any app you trust read your boxes, so you can chat with your stuff, build little automations (e.g. a reminder when you haven't opened a box in a year), or hook Asamano into your smart home.

Authentication

All API requests require a valid API key passed as a Bearer token in the Authorization header. API keys are created by Customer Admins in Settings.

Key format

asamano_live_<random_string>

Header usage

Authorization: Bearer asamano_live_...

Create and manage API keys in Settings → API.

Base URL

https://api.asamano.com

All API endpoints are relative to this base URL.

Endpoints

GET

/api/v1/boxes

Returns all boxes for the authenticated organization. Draft boxes are excluded.

Query Parameters

NameTypeDescription
limitintegerDefault 20, max 100
cursorstringPagination cursor from previous response
updated_sinceISO 8601Only return boxes updated after this timestamp
searchstringSearch by title or description

Example Request

curl "https://api.asamano.com/api/v1/boxes?limit=20" \
  -H "Authorization: Bearer asamano_live_..."

Example Response

{
  "data": [
    {
      "id": "box_123",
      "title": "Winter Clothes",
      "description": "Jackets and gloves",
      "qr_code": "QR-ABC-123",
      "location": {
        "building": "Home",
        "room": "Storage",
        "shelf": "Top shelf"
      },
      "tags": ["winter", "clothes"],
      "image_count": 3,
      "item_count": 12,
      "category": "clothing",
      "owner": "John Doe",
      "created_at": "2026-04-01T10:00:00Z",
      "updated_at": "2026-04-05T12:00:00Z"
    }
  ],
  "next_cursor": "cursor_abc123"
}

Response Fields

FieldDescription
idUnique box identifier
titleBox title
descriptionBox description
qr_codeQR code identifier
locationNested location object (building, room, shelf)
tagsArray of tags
image_countNumber of attached images
item_countNumber of items inside this box
categoryBox category
ownerOwner name
created_atCreation timestamp (ISO 8601)
updated_atLast update timestamp (ISO 8601)
GET

/api/v1/boxes/:id

Returns a single box with embedded items and images in one call.

GET

/api/v1/items

Lists items across all boxes in your organization. AI-detected items reference source_image_id; manual items have it null.

GET

/api/v1/images

Lists box images with signed URLs for three rendered versions. URLs expire after 1 hour — re-request rather than caching long-term.

Pagination

The API uses cursor-based pagination. Each response includes a next_cursor field. Pass it as the cursor parameter in your next request to fetch the next page.

  1. Make a request with an optional limit parameter
  2. Check the next_cursor field in the response
  3. Pass next_cursor as the cursor parameter in your next request
// Fetch all boxes using cursor pagination
let cursor = null;
let allBoxes = [];

do {
  const url = new URL("https://api.asamano.com/api/v1/boxes");
  url.searchParams.set("limit", "100");
  if (cursor) url.searchParams.set("cursor", cursor);

  const res = await fetch(url, {
    headers: { Authorization: "Bearer asamano_live_..." }
  });
  const json = await res.json();

  allBoxes = allBoxes.concat(json.data);
  cursor = json.next_cursor;
} while (cursor);

Rate Limiting

API requests are rate-limited per calendar month based on your subscription plan.

PlanMonthly Limit
Free1,000 requests/month
Starter / Pro / Business50,000 requests/month

Response Headers

  • X-RateLimit-Limit — Your monthly request quota
  • X-RateLimit-Remaining — Requests remaining this month

Error Handling

The API returns consistent error responses with a machine-readable error code and a human-readable message.

{
  "error": "rate_limit_exceeded",
  "message": "You have exceeded your monthly API request limit"
}
Error CodeHTTP StatusDescription
missing_api_key401No API key provided
invalid_api_key401API key is invalid or revoked
organization_suspended403Organization account is suspended
rate_limit_exceeded429Monthly request limit exceeded
not_found404Resource not found
internal_error500Unexpected server error

Code Examples

curl "https://api.asamano.com/api/v1/boxes?limit=20" \
  -H "Authorization: Bearer asamano_live_..."

OpenAPI Specification

Download the OpenAPI 3.0 specification to import into Postman, Insomnia, or your favorite API tool.

Download openapi.json

Ready to integrate?

Create a free account and get your API key in minutes.

We use cookies to measure traffic and improve our advertising. You can accept or decline tracking. Privacy Policy