Skip to content

List the caller's Lorebooks

GET
/open/v1/worldbook/mine
curl --request GET \
--url 'https://api.harperharbor.com/open/v1/worldbook/mine?pageNum=1&pageSize=20' \
--header 'Authorization: Bearer <token>'

Pages through the Lorebooks owned by the bearer. q, when given, is matched case-insensitively as a substring of worldbookId, name, description or tags — but the filter is applied to the already-paged result, so total is the number of matching books on the current page, not a global count. pageSize defaults to 20 and is capped at 100. accountPermission is owner for every item.

q
string

Substring filter applied to the current page.

pageNum
integer
default: 1 >= 1

1-based page. Non-numeric or 0 falls back to 1.

pageSize
integer
default: 20 >= 1 <= 100

Items per page (capped at 100).

Page of Lorebooks.

Media typeapplication/json
object
query
required
string
total
required

Number of books returned on this page (after the q filter) — not a global count.

integer format: int64
pageNum
required
integer
pageSize
required
integer
worldbooks
required
Array<object>
object
worldbookId
required
string
name
required
string
description
required
string
iconUrl
required
string
visibility
required
string
Allowed values: private public waitReview
language
required
string
tags
required

Comma-joined tag string.

string
entryCount
required
integer
accountPermission
required

owner when the caller owns the book.

string
Allowed values: owner ""
lastUpdateTime
required
string format: date-time
nullable
format
required
string
Allowed values: "" tavern
usedByCards

How many cards this Lorebook is bound to. Present in /open/v1/worldbook/mine.

integer
nextRecommendedTools
required
Array<string>
Example
{
"worldbooks": [
{
"visibility": "private",
"accountPermission": "owner",
"format": ""
}
]
}

unauthorized.

Media typeapplication/json
object
error
required

Error code (snake_case) or, for legacy handlers, a free-text/localized message.

string
message

Human-readable sentence. Present only on middleware errors and /me, /me/wallet.

string
retryable

Whether retrying may succeed. Present only on middleware errors, /me, /me/wallet and service/share routes.

boolean
required_context_tier

Only on a first-turn context_capacity_exceeded: the smallest context tier that fits the whole card with room to talk. Save it as context in player settings and resend. Absent when no tier fits.

integer
>= 1 <= 5
required_context_tokens

The token budget of required_context_tier for the selected model, for display.

integer
constant_lore_trim_fits

Only on a first-turn context_capacity_exceeded: whether saving trimConstantLore=true lets the card play at the current tier. Absent on mid-conversation capacity errors.

boolean
credits_needed

Only on insufficient_credits: the credits this turn needs before it can start. Absent when the refusal came without an estimate.

integer
credits_available

Only on insufficient_credits: the credits the wallet could set aside for it.

integer
Examplegenerated
{
"error": "example",
"message": "example",
"retryable": true,
"required_context_tier": 1,
"required_context_tokens": 1,
"constant_lore_trim_fits": true,
"credits_needed": 1,
"credits_available": 1
}

Unclassified error; retryable: true.

Media typeapplication/json
object
error
required

Error code (snake_case) or, for legacy handlers, a free-text/localized message.

string
message

Human-readable sentence. Present only on middleware errors and /me, /me/wallet.

string
retryable

Whether retrying may succeed. Present only on middleware errors, /me, /me/wallet and service/share routes.

boolean
required_context_tier

Only on a first-turn context_capacity_exceeded: the smallest context tier that fits the whole card with room to talk. Save it as context in player settings and resend. Absent when no tier fits.

integer
>= 1 <= 5
required_context_tokens

The token budget of required_context_tier for the selected model, for display.

integer
constant_lore_trim_fits

Only on a first-turn context_capacity_exceeded: whether saving trimConstantLore=true lets the card play at the current tier. Absent on mid-conversation capacity errors.

boolean
credits_needed

Only on insufficient_credits: the credits this turn needs before it can start. Absent when the refusal came without an estimate.

integer
credits_available

Only on insufficient_credits: the credits the wallet could set aside for it.

integer
Examplegenerated
{
"error": "example",
"message": "example",
"retryable": true,
"required_context_tier": 1,
"required_context_tokens": 1,
"constant_lore_trim_fits": true,
"credits_needed": 1,
"credits_available": 1
}

worldbook_unavailable.

Media typeapplication/json
object
error
required

Error code (snake_case) or, for legacy handlers, a free-text/localized message.

string
message

Human-readable sentence. Present only on middleware errors and /me, /me/wallet.

string
retryable

Whether retrying may succeed. Present only on middleware errors, /me, /me/wallet and service/share routes.

boolean
required_context_tier

Only on a first-turn context_capacity_exceeded: the smallest context tier that fits the whole card with room to talk. Save it as context in player settings and resend. Absent when no tier fits.

integer
>= 1 <= 5
required_context_tokens

The token budget of required_context_tier for the selected model, for display.

integer
constant_lore_trim_fits

Only on a first-turn context_capacity_exceeded: whether saving trimConstantLore=true lets the card play at the current tier. Absent on mid-conversation capacity errors.

boolean
credits_needed

Only on insufficient_credits: the credits this turn needs before it can start. Absent when the refusal came without an estimate.

integer
credits_available

Only on insufficient_credits: the credits the wallet could set aside for it.

integer
Examplegenerated
{
"error": "example",
"message": "example",
"retryable": true,
"required_context_tier": 1,
"required_context_tokens": 1,
"constant_lore_trim_fits": true,
"credits_needed": 1,
"credits_available": 1
}