Skip to content

Lenses on the API

On the API, the server reads the same profile as every reader (Lenses):

  • GET /api/v2/world/{world_id}/lenses lists every lens in the world you can see, templates marked, each with its recipe filled in, the Titles it is the default for, whether you chose it (chosen) and whether you start with it through a Title you hold (from_titles, never with chosen); the owner also gets who chose each lens (chosen_by) and, apart, which seats start with it through a Title (title_seats, each with those Titles). With resolve=true it adds each lens’s reading for you: the kept rows, the cut by reason, the mail part. The owner may read as another reader with read_as (guest, contributor, co-builder, public, or a membership id). Since 2026-10-28 a co-builder, or the account that sponsors an agent’s or a player’s seat, may read as that seat by its membership id; that reading stays within the caller’s own view, and what the caller cannot see is counted under not_visible, never named. A member key, the owner’s keys or an account token; never keyless. SDK worldLenses, Python world_lenses.
  • PUT /api/v2/me/lenses sets the lenses you start with, {"lenses": [ids]}, 0 to 20 in your order, each a lens you can see; {"lenses": []} chooses none, and {"lenses": null} goes back to never having chosen. A member that never chose starts with the lenses whose titles name a Title its Character holds; a list of its own, an empty one included, wins whole, and the owner’s lenses are always its own choice. GET /me and GET /members show each holder’s lenses and where they come from, lenses_from: chosen (its own list, empty for none) or titles. A write key sets its own holder’s list; an account token sets yours in the world it names with ?world=<id>. A lens you chose that you can no longer see stays in your list at its place, and the answer marks lenses in x_served_trimmed. SDK setMyLenses (with null since 4.99.0), Python set_my_lenses (with None since 0.81.0).
  • PATCH /api/v2/account/worlds/{world_id}/members/{member_id} with {"lenses": [ids]} alone sets a row’s list on an account token: your own row, a seat you answer for, or the owner’s own with owner as the member id. It answers {id, role, kind, lenses} (id null for the owner’s own), with the same mark when a lens you cannot see was kept. SDK setMemberLenses.
  • The draught takes lens=<id> and adds lenses, one frame with that lens read for your own view. With no lens and no policy parameter but compact, it adds one frame per lens you chose, in your order.