Community library
Browse the Nodaro community library from TypeScript, clone shared characters, locations and objects into your account, favorite them, and report a listing.
Available on Nodaro Cloud · Business edition
client.community reads the community library, the shared collection of characters, locations and objects curated by the Nodaro team. You can browse and search it, read a listing, clone a listing into your own account, favorite it, and report it for moderation. The methods call the Community REST API. See Community library for the feature and its likeness and consent rules.
The community library exists on multi-user installs: Nodaro Cloud and Business edition. A single-user Community edition install answers every call with NotFoundError.
Methods
| Method | What it does |
|---|---|
browse(params?) | Browse and search the listings |
get(slug) | Read one listing |
getFull(slug) | Read one listing with its full public snapshot |
favorites() | List the listings you favorited |
clone(id, entityType) | Copy a listing into your account |
favorite(id) | Add or remove a favorite |
report(id, reason) | Report a listing for moderation |
Publishing is not part of the SDK: the SDK's personal and OAuth tokens cannot publish.
client.community
A listing is a CommunityCard. Its fields use snake_case, as the API sends them. CommunityEntityType is "character", "location" or "object".
browse(params?)
Returns a page of public listings and a nextCursor (GET /v1/community/browse). Pass nextCursor back as cursor for the next page; it is null on the last page.
browse(params?: BrowseCommunityParams): Promise<{ data: CommunityCard[]; nextCursor: string | null }>Prop
Type
const { data: listings, nextCursor } = await client.community.browse({
entityType: "character",
sort: "popular",
limit: 20,
})get(slug)
Reads one listing by its slug (GET /v1/community/detail/:slug).
get(slug: string): Promise<{ data: CommunityCard }>Prop
Type
const { data: listing } = await client.community.get("detective-mara")Throws NotFoundError when the listing does not exist or is no longer active.
getFull(slug)
Reads one listing with its full public snapshot: its images, voice and text, as a detail page shows them (GET /v1/community/detail/:slug/full).
getFull(slug: string): Promise<{ data: CommunityFullDetail }>Prop
Type
const { data: detail } = await client.community.getFull("detective-mara")favorites()
Lists the listings you favorited (GET /v1/community/favorites).
favorites(): Promise<{ data: CommunityCard[] }>const { data: favorites } = await client.community.favorites()clone(id, entityType)
Copies a listing into your library as an independent copy (POST /v1/community/listings/:id/clone). Its files are copied into your own storage, so the copy stays when the original changes or is removed. It returns the kind and id of your new asset.
clone(id: string, entityType: "character" | "location" | "object"): Promise<{ entityType: string; id: string }>Prop
Type
const { id: characterId } = await client.community.clone(listingId, "character")
const character = await client.characters.get(characterId)An OAuth token needs the assets:write scope. Throws StorageExceededError when your storage is full.
favorite(id)
Adds a listing to your favorites, or removes it when it is already there (POST /v1/community/listings/:id/favorite). It returns the new state.
favorite(id: string): Promise<{ favorited: boolean }>Prop
Type
const { favorited } = await client.community.favorite(listingId)report(id, reason)
Reports a listing for moderation (POST /v1/community/listings/:id/report).
report(id: string, reason: CommunityReportReason): Promise<{ ok: true }>Prop
Type
await client.community.report(listingId, "real_person_no_consent")Frequently asked questions
Related
Community library
Characters
Locations
Community Library
Last updated on
Objects and creatures
Create objects and creatures, generate main images and variants, animate them, and make a creature talk from TypeScript with the Nodaro SDK.
Studio productions
Create Studio productions from a plan, edit them with operations, generate stills and clips, review planned frames, and share or copy them from TypeScript.