curl "https://api.bottari.ai/v1/data_sources/exampleDb001/query?filter_properties=title&filter_properties=exampleFld01" \
-X POST \
-H "Authorization: Bearer $BOTTARI_TOKEN" \
-H "Bottari-Version: 2026-03-11" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"property": "담당 팀",
"select": {
"equals": "운영"
}
},
"sorts": [
{
"timestamp": "created_time",
"direction": "descending"
}
],
"page_size": 10
}'
{
"object": "list",
"results": [
{
"object": "page",
"id": "exampleRow01",
"created_time": "2026-01-15T02:30:00.000Z",
"last_edited_time": "2026-01-15T03:10:00.000Z",
"created_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"last_edited_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"in_trash": false,
"cover": null,
"icon": null,
"parent": {
"type": "data_source_id",
"data_source_id": "exampleDb001",
"database_id": "exampleDb001"
},
"is_archived": false,
"is_locked": false,
"properties": {
"이름": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "1월 주문 확인",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "1월 주문 확인",
"href": null
}
]
},
"담당 팀": {
"id": "exampleFld01",
"type": "select",
"select": {
"id": "exampleOpt01",
"name": "운영",
"color": "blue"
}
}
},
"url": "https://app.bottari.ai/t/exampleTeam1/p/exampleRow01",
"public_url": null
}
],
"next_cursor": "eyJxIjoiZXhhbXBsZSJ9",
"has_more": true,
"type": "page_or_data_source",
"page_or_data_source": {},
"request_id": "33333333-3333-4333-8333-333333333333"
}
데이터베이스와 데이터 소스
행 쿼리하기
데이터베이스의 행을 필터와 정렬로 읽습니다.
POST
/
v1
/
data_sources
/
{id}
/
query
curl "https://api.bottari.ai/v1/data_sources/exampleDb001/query?filter_properties=title&filter_properties=exampleFld01" \
-X POST \
-H "Authorization: Bearer $BOTTARI_TOKEN" \
-H "Bottari-Version: 2026-03-11" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"property": "담당 팀",
"select": {
"equals": "운영"
}
},
"sorts": [
{
"timestamp": "created_time",
"direction": "descending"
}
],
"page_size": 10
}'
{
"object": "list",
"results": [
{
"object": "page",
"id": "exampleRow01",
"created_time": "2026-01-15T02:30:00.000Z",
"last_edited_time": "2026-01-15T03:10:00.000Z",
"created_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"last_edited_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"in_trash": false,
"cover": null,
"icon": null,
"parent": {
"type": "data_source_id",
"data_source_id": "exampleDb001",
"database_id": "exampleDb001"
},
"is_archived": false,
"is_locked": false,
"properties": {
"이름": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "1월 주문 확인",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "1월 주문 확인",
"href": null
}
]
},
"담당 팀": {
"id": "exampleFld01",
"type": "select",
"select": {
"id": "exampleOpt01",
"name": "운영",
"color": "blue"
}
}
},
"url": "https://app.bottari.ai/t/exampleTeam1/p/exampleRow01",
"public_url": null
}
],
"next_cursor": "eyJxIjoiZXhhbXBsZSJ9",
"has_more": true,
"type": "page_or_data_source",
"page_or_data_source": {},
"request_id": "33333333-3333-4333-8333-333333333333"
}
행 목록을 읽습니다. 기본으로 휴지통 행과 보관한 행은 빠집니다. 정렬을 지정하지 않으면 만든 시각이 늦은 행부터 반환합니다.
이 엔드포인트는 호출 횟수를 따로 제한합니다. 연동마다 초당 약 3회입니다. 호출 횟수 제한 자세히 알아보기 →
공통 오류는 공통 규칙에서 확인할 수 있습니다.
string
필수
Bearer <토큰> 형식입니다. 토큰 자세히 알아보기 →string
선택 항목입니다.
2026-03-11만 받습니다. 빼면 현재 버전을 사용하고, 다른 값을 보내면 400을 반환합니다.string
필수
데이터 소스 ID입니다. 데이터베이스 ID를 넣으세요.
string[]
응답에 담을 속성 이름이나 ID입니다. 모르는 속성은 400입니다.
object
object[]
string
앞 응답의
next_cursor입니다. 필터와 정렬이 같아야 합니다.number
기본값:"100"
1~100입니다.
boolean
true면 휴지통에 있는 행만 반환합니다.boolean
true면 보관한 행만 반환합니다.string
page만 받습니다.object[]
page 객체 목록입니다. 속성 값 자세히 알아보기 →string | null
다음 목록의 커서입니다.
boolean
더 있으면
true입니다.string
항상
page_or_data_source입니다.전부 읽기
쿼리 결과의 전체 행 수에는 상한이 없습니다.has_more가 true면 next_cursor를 start_cursor로 보내고, has_more가 false가 될 때까지 반복하세요.
curl https://api.bottari.ai/v1/data_sources/exampleDb001/query \
-X POST \
-H "Authorization: Bearer $BOTTARI_TOKEN" \
-H "Bottari-Version: 2026-03-11" \
-H "Content-Type: application/json" \
-d '{ "start_cursor": "eyJxIjoiZXhhbXBsZSJ9" }'
오류
| 상태 | code | 원인 |
|---|---|---|
| 400 | validation_error | 모르는 본문 키, 틀린 필터나 정렬, 다른 쿼리의 커서, 모르는 filter_properties입니다. |
| 404 | object_not_found | 없거나 연결하지 않았거나 휴지통에 있는 데이터베이스입니다. |
| 429 | rate_limited | 호출 횟수를 넘겼습니다. |
curl "https://api.bottari.ai/v1/data_sources/exampleDb001/query?filter_properties=title&filter_properties=exampleFld01" \
-X POST \
-H "Authorization: Bearer $BOTTARI_TOKEN" \
-H "Bottari-Version: 2026-03-11" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"property": "담당 팀",
"select": {
"equals": "운영"
}
},
"sorts": [
{
"timestamp": "created_time",
"direction": "descending"
}
],
"page_size": 10
}'
{
"object": "list",
"results": [
{
"object": "page",
"id": "exampleRow01",
"created_time": "2026-01-15T02:30:00.000Z",
"last_edited_time": "2026-01-15T03:10:00.000Z",
"created_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"last_edited_by": {
"object": "user",
"id": "11111111-1111-4111-8111-111111111111"
},
"in_trash": false,
"cover": null,
"icon": null,
"parent": {
"type": "data_source_id",
"data_source_id": "exampleDb001",
"database_id": "exampleDb001"
},
"is_archived": false,
"is_locked": false,
"properties": {
"이름": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "1월 주문 확인",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "1월 주문 확인",
"href": null
}
]
},
"담당 팀": {
"id": "exampleFld01",
"type": "select",
"select": {
"id": "exampleOpt01",
"name": "운영",
"color": "blue"
}
}
},
"url": "https://app.bottari.ai/t/exampleTeam1/p/exampleRow01",
"public_url": null
}
],
"next_cursor": "eyJxIjoiZXhhbXBsZSJ9",
"has_more": true,
"type": "page_or_data_source",
"page_or_data_source": {},
"request_id": "33333333-3333-4333-8333-333333333333"
}