# API route index

> All 271 public operations of the Tune.Toys API 0.1.0, grouped by tag.

Source: https://docs.tune.toys/developers/api/

- GET /v1/account/locale: Account language and time zone
- PUT /v1/account/locale: Set account language (UI, email, push) and time zone (digests, quiet hours)
- GET /v1/notifications: Page of the caller's rendered notifications (ETag)
- PUT /v1/notifications/channels/{channel}: Digest cadence and quiet hours for one channel
- GET /v1/notifications/preferences: Event × channel matrix, digests, quiet hours and channel availability
- PUT /v1/notifications/preferences: Change matrix cells; required events cannot be disabled
- POST /v1/notifications/read: Mark notifications read by id, or all in a filter
- POST /v1/notifications/test: Send a test notification by email or web push (3 per hour)
- GET /v1/notifications/unread-count: Unread notification count for polling (ETag)
- POST /v1/notifications/{notificationId}/dismiss: Dismiss one notification from every filter
- POST /v1/notifications/{notificationId}/unread: Mark one notification unread
- GET /v1/push-subscriptions: The caller's push devices
- POST /v1/push-subscriptions: Register this browser for web push
- DELETE /v1/push-subscriptions/{subscriptionId}: Remove a push device
- GET /v1/push/vapid-public-key: Web push application server key
- GET /v1/subscriptions: Followed products, publishers, threads and docs pages
- GET /v1/subscriptions/{subjectType}/{subjectId}: Follow state for one subject
- PUT /v1/subscriptions/{subjectType}/{subjectId}: Follow a product, publisher, thread or docs page
- DELETE /v1/subscriptions/{subjectType}/{subjectId}: Stop following a subject
- GET /v1/addons: List the addons this account has enabled
- PUT /v1/addons: Replace the set of enabled addons for this account
- GET /v1/connections: List connected services (labels and scopes, never tokens)
- DELETE /v1/connections/{id}: Disconnect a service and revoke its grant at the provider
- GET /v1/connections/{id}/files: List app-visible Drive files (parent, name search, page token)
- POST /v1/connections/{id}/files: Create a Drive file from the raw request body (≤ 64 MiB); name, mimeType and parent in the query
- GET /v1/connections/{id}/files/{fileId}: Read Drive file metadata
- PATCH /v1/connections/{id}/files/{fileId}: Rename (JSON { name }) or replace the bytes (raw body ≤ 64 MiB) of a Drive file
- DELETE /v1/connections/{id}/files/{fileId}: Delete a Drive file the app can see
- GET /v1/connections/{id}/files/{fileId}/content: Stream Drive file bytes (≤ 64 MiB)
- GET /v1/connections/{id}/picker: Short-lived drive.file access token and Picker settings for the Google Drive picker
- POST /v1/connections/{provider}/start: Start consent for a service connection (Google Drive drive.file, Spotify, TONE3000)
- GET /v1/network/allowlist: Read the extra exact hosts this account allows for web nodes
- PUT /v1/network/allowlist: Replace the account network allowlist (exact hosts, at most 32; private ranges stay refused)
- POST /v1/agent/proposals: Generate a revision-bound Toy edit proposal from a recipe brief
- POST /v1/ai/complete: Complete a chat with Anthropic, OpenAI or Gemini using the caller’s own vault key
- GET /v1/ai/models: Pinned model suggestions per provider and the caller’s daily allowance
- POST /v1/proxy/request: Make one allowlisted HTTPS request, optionally injecting a vault secret server-side
- GET /v1/artifacts/{id}/bytes: Download a free or browser artifact with digest verification
- GET /v1/platform/targets: The 13 target profiles with buildable formats and builder status
- POST /v1/products/{id}/aliases/{alias}: Move stable or beta with an expected-previous check
- GET /v1/products/{id}/versions: List versions with matrix, artifacts and aliases (drafts for publisher members only)
- POST /v1/products/{id}/versions: Create a draft version pinned to project releases
- GET /v1/products/{id}/versions/suggest: Suggest the next semver from the public-control diff of the latest release
- GET /v1/projects/{projectId}/product: The product that wraps a published project, for version and download UI
- GET /v1/versions/{id}: Read one version with its matrix and artifacts
- PATCH /v1/versions/{id}: Edit a draft, or the matrix claims of a published version
- GET /v1/versions/{id}/artifacts: Registered artifacts of a version (public fields)
- POST /v1/versions/{id}/artifacts: Upload and register an artifact (application/octet-stream body, metadata in the query)
- POST /v1/versions/{id}/publish: Freeze and publish a version; creates the browser artifact
- GET /v1/versions/{id}/targets: Platform matrix for a version: all 13 profiles
- POST /v1/versions/{id}/yank: Withdraw a published version with a public reason
- POST /v1/artifacts/{id}/tickets: Issue a one-time, 15-minute download ticket (anonymous for free public artifacts)
- GET /v1/certificates: The caller's certificates with offline states
- POST /v1/certificates/{id}/refresh: Refresh a certificate, or learn that it was revoked
- GET /v1/distribution/keys: Public Ed25519 keys by purpose (diagnostics; clients pin keys)
- GET /v1/downloads/{ticketId}: Artifact bytes for a ticket token (`?t=`): single Range, ETag digest, Repr-Digest
- GET /v1/install/{product}/{version}: Install deep-link fallback page (HTML)
- GET /v1/installations: Installation records for the caller, optionally per device or product
- POST /v1/installations: Record a verified install on a Player or Installer device
- PUT /v1/installations/{id}: Change state or version, report last seen, or roll back
- POST /v1/products/{id}/certificate: Issue a signed 30-day offline license certificate for an owned product
- GET /v1/products/{id}/feed/{channel}: Signed update manifest (tunetoys.update-manifest/1) with its changelog text
- GET /v1/products/{id}/latest/{target}: Latest installable desktop app artifact for macos, windows or linux (`?channel=`, Linux `?format=appimage|deb`)
- POST /v1/auth/email: Add or resend verification for a recovery address
- POST /v1/auth/login: Create a handle/password session
- POST /v1/auth/logout: Revoke the current session and expire its cookie
- GET /v1/auth/me: Read the current account and browser CSRF token
- POST /v1/auth/oauth/{provider}/start: Start provider sign-in or explicit identity linking
- GET /v1/auth/options: List sign-in providers and email delivery availability
- POST /v1/auth/password: Set or replace the caller's password and end their other browser sessions
- GET /v1/auth/profile: Read owner-only email and connected-method metadata
- PATCH /v1/auth/profile: Change the caller's display name
- POST /v1/auth/recover: Request password recovery email
- POST /v1/auth/register: Create a handle/password account and session
- POST /v1/auth/reset-password: Consume a reset token and replace the password
- POST /v1/auth/verify-email: Consume an email verification token
- POST /v1/billing/checkout: Start a hosted checkout for an offer
- GET /v1/billing/entitlements: List the caller's entitlements
- GET /v1/billing/options: List configured offers
- GET /v1/billing/orders: List the caller's orders
- POST /v1/billing/orders/{orderId}/portal: Open the provider billing portal for an order
- POST /v1/billing/orders/{orderId}/sync: Reconcile an order with the provider
- GET /v1/catalog: Search the public catalog
- GET /v1/releases/{digest}: Read an immutable release
- GET /v1/releases/{digest}/assets/{assetId}: Download a release asset as a sandboxed attachment
- GET /v1/releases/{digest}/engine: Download the release engine WebAssembly
- GET /v1/releases/{digest}/package: Download the canonical release package
- GET /v1/toys/{toyId}: Read a public or authorized Toy listing
- GET /v1/community/activity: List activity from followed accounts
- PUT /v1/community/avatar: Set the caller's avatar from owned media
- GET /v1/community/avatars/{avatarId}: Read avatar image bytes
- GET /v1/community/blocks: List accounts the caller blocked
- POST /v1/community/collections: Create a collection
- GET /v1/community/collections/{collectionId}: Read a collection page
- PUT /v1/community/collections/{collectionId}: Update a collection
- DELETE /v1/community/collections/{collectionId}: Delete a collection at an expected version
- PUT /v1/community/collections/{collectionId}/items: Add, move or remove a Toy or sound in a collection by subject (subjectType project|media)
- PUT /v1/community/collections/{collectionId}/toys/{toyId}: Add, move or remove a Toy in a collection
- GET /v1/community/invitations: List the caller's pending project invitations
- PUT /v1/community/profile: Update the caller's community profile
- GET /v1/community/profiles/{handle}: Read a public profile
- PUT /v1/community/profiles/{handle}/block: Block or unblock a profile
- GET /v1/community/profiles/{handle}/collections: List a profile's collections
- PUT /v1/community/profiles/{handle}/follow: Follow or unfollow a profile
- GET /v1/community/profiles/{handle}/followers: List a profile's followers
- GET /v1/community/profiles/{handle}/following: List a profile's followed accounts
- GET /v1/community/profiles/{handle}/likes: List Toys a profile liked
- GET /v1/community/profiles/{handle}/toys: List a profile's public Toys
- GET /v1/community/projects/{projectId}/assets/{assetId}: Download a shared project media asset
- POST /v1/community/projects/{projectId}/edits: Apply a collaborative project edit
- POST /v1/community/projects/{projectId}/invitation: Accept or decline a project invitation
- POST /v1/community/projects/{projectId}/members: Invite a project member
- DELETE /v1/community/projects/{projectId}/members/{accountId}: Remove a project member
- PUT /v1/community/projects/{projectId}/presence: Publish collaboration presence
- DELETE /v1/community/projects/{projectId}/presence/{sessionId}: End a collaboration presence session
- GET /v1/community/projects/{projectId}/state: Read collaboration state since a source version
- POST /v1/community/reports: Report content or an account
- GET /v1/community/reports: List reports for moderators
- PATCH /v1/community/reports/{reportId}: Review a report as a moderator
- GET /v1/community/shared: List projects shared with the caller
- GET /v1/community/toys/{toyId}/likes: Read like count and caller state for a Toy
- PUT /v1/community/toys/{toyId}/likes: Like or unlike a Toy
- GET /v1/creators: Creators with public Toys, sounds or chains: counts, filter by what they publish, sort by followers or newest
- GET /v1/config: Whether server text proposals are configured
- GET /v1/health: Readiness and engine ABI
- GET /v1/developer/apps: List the caller's developer apps
- POST /v1/developer/apps: Create a developer app (at most 10 per account)
- GET /v1/developer/apps/{appId}: Read one app with its effective tier
- PATCH /v1/developer/apps/{appId}: Update app fields at an expected version
- DELETE /v1/developer/apps/{appId}: Delete an app; revokes its keys and disables its webhooks
- GET /v1/developer/apps/{appId}/audit: Recent audit events of one app, newest first
- GET /v1/developer/apps/{appId}/keys: Key metadata for one app; never secrets
- POST /v1/developer/apps/{appId}/keys: Create a key; the secret is returned once
- GET /v1/developer/apps/{appId}/tier: Effective tier, its limits and whether an upgrade can be purchased
- GET /v1/developer/apps/{appId}/usage: Hourly or daily usage series with per-key totals
- GET /v1/developer/apps/{appId}/usage.csv: Hourly usage as CSV (UTC, at most 90 days)
- GET /v1/developer/apps/{appId}/webhooks: Webhooks of one app
- POST /v1/developer/apps/{appId}/webhooks: Create a webhook (pro); sends a verification challenge
- POST /v1/developer/deliveries/{deliveryId}/redeliver: Queue another attempt of a delivered or failed event
- GET /v1/developer/key: Introspect the presenting key: app, scopes, tier and expiry
- POST /v1/developer/key/revoke: Self-revocation for leak response
- PATCH /v1/developer/keys/{keyId}: Rename a key, change its scopes or IP allowlist
- POST /v1/developer/keys/{keyId}/revoke: Revoke a key immediately
- POST /v1/developer/keys/{keyId}/rotate: Issue a replacement key; the old key keeps working for the overlap
- GET /v1/developer/limits: Current bucket and quota state for a key, or the tier policies
- GET /v1/developer/scopes: Scopes a key may hold, with descriptions
- PATCH /v1/developer/webhooks/{webhookId}: Change events, URL or state; URL changes and re-enabling re-verify
- GET /v1/developer/webhooks/{webhookId}/deliveries: Delivery log: one row per attempt, newest first
- POST /v1/developer/webhooks/{webhookId}/test: Queue a signed webhook.test delivery
- POST /v1/developer/webhooks/{webhookId}/verify: Resend the verification challenge
- GET /v1/openapi.json: This OpenAPI 3.1 document
- GET /v1/email/unsubscribe: Browser page that confirms an email unsubscribe; never mutates
- POST /v1/email/unsubscribe: RFC 8058 one-click and page unsubscribe for one token scope
- POST /v1/embed/events: Count one in-frame play (bounded daily counter, no viewer data)
- GET /v1/products/{id}/embed: Embed policy, origins, effective frame-ancestors and the Patch view opt-in
- PATCH /v1/products/{id}/embed: Replace the embed policy and origin allowlist; optionally set the Patch view opt-in
- GET /v1/products/{id}/embed/analytics: Loads and plays per embedding origin for the last N days
- POST /v1/exports: Queue a take render, Frame video or screen-recording transcode
- GET /v1/exports: The caller's 50 newest export and convert jobs
- GET /v1/exports/{exportId}: Export state, progress, warnings, error class and output
- DELETE /v1/exports/{exportId}: Cancel a queued or running export; finished jobs are unchanged
- GET /v1/exports/{exportId}/output: Download a finished export as a sandboxed attachment
- GET /v1/library: List the caller's library
- GET /v1/library/bookmarks: Read quick-bookmark flags for listed Toys
- GET /v1/library/sync: Read library events after a cursor
- PUT /v1/library/{itemId}: Write library bookmark, tags and pinned release
- DELETE /v1/library/{itemId}: Remove a library item at an expected version
- PUT /v1/library/{itemId}/bookmark: Set the quick-bookmark flag
- GET /v1/listings/publishers: Publishers where the caller is an active member, with roles
- GET /v1/products/{productId}/documents: Manuals, docs and FAQ documents
- POST /v1/products/{productId}/documents: Create a Markdown or PDF document
- PUT /v1/products/{productId}/documents/{documentId}: Update a document (title, slug, body, PDF or position)
- DELETE /v1/products/{productId}/documents/{documentId}: Delete a document
- GET /v1/products/{productId}/listing: Listing, draft and published revisions, effective fields and checks
- PATCH /v1/products/{productId}/listing: Change listing visibility, default locale or product slug
- POST /v1/products/{productId}/listing/assets: Attach an uploaded image as the thumbnail, social or marketing image
- GET /v1/products/{productId}/listing/assets: Generated listing asset slots with status, overrides, jobs and the daily budget
- POST /v1/products/{productId}/listing/assets/jobs/{jobId}/cancel: Cancel a queued or running asset job; the previous ready asset stays
- DELETE /v1/products/{productId}/listing/assets/{assetId}: Remove an uploaded asset override (reset to generated)
- GET /v1/products/{productId}/listing/assets/{assetId}/bytes: Member preview of a ready generated asset, whatever the listing visibility
- PUT /v1/products/{productId}/listing/draft: Save the draft revision (named top-level keys only)
- DELETE /v1/products/{productId}/listing/draft: Discard the unpublished draft revision
- DELETE /v1/products/{productId}/listing/draft/overrides/{field}: Reset one field (or all) to the generated value
- POST /v1/products/{productId}/listing/gallery/video-links: Parse a YouTube or Vimeo URL to a canonical video id
- POST /v1/products/{productId}/listing/publish: Validate and publish the draft revision
- POST /v1/products/{productId}/listing/regenerate: Regenerate all generated assets, some kinds, or one variant (never touches uploaded overrides)
- GET /v1/products/{productId}/listing/revisions: Listing revision history
- POST /v1/products/{productId}/listing/revisions/{revisionId}/restore: Copy a revision into the draft
- GET /v1/products/{productId}/listing/translations: Translations of the draft (or published) revision
- PUT /v1/products/{productId}/listing/translations/{locale}: Save translated fields and their state for the draft revision
- GET /v1/projects/{projectId}/listing: Listing editor read model for a published Toy's product
- GET /v1/publishers/{handle}/products: A publisher's products with listing state, for members
- GET /v1/media: Search visible media (alias of GET /v1/sounds in the pre-0.0.8 item shape; kind= filters by family)
- GET /v1/media/upload-access: Read the caller's upload permission and policy mode
- POST /v1/media/uploads: Reserve an upload with its transfer facts, rights and catalog metadata in one request
- POST /v1/media/uploads/{uploadId}/complete: Verify and publish an uploaded media version
- GET /v1/media/{mediaId}: Read media metadata
- GET /v1/media/{mediaId}/bytes: Download media bytes as a sandboxed attachment
- POST /v1/media/{mediaId}/convert: Queue a conversion of a library item into a new private library item
- GET /v1/native/authorize: Validate a Player authorization request and loopback callback
- POST /v1/native/authorize: Consent to a Player request and issue a short-lived code
- GET /v1/native/devices: List the caller's authorized Player devices
- POST /v1/native/devices/{deviceId}/revoke: Revoke an owned Player device
- PATCH /v1/offers/{offerId}: Activate or deactivate a creator offer
- GET /v1/products/{productId}/access: The caller's access to a product's paid content
- GET /v1/products/{productId}/offers: List active offers (managers also see inactive offers)
- POST /v1/products/{productId}/offers: Create a free or one-time creator offer (owner/finance)
- GET /v1/publishers/me: Read (creating on first use) the caller's personal publisher
- PATCH /v1/publishers/{publisherId}: Update display name, support email or seller terms acceptance
- GET /v1/publishers/{publisherId}/connect: Read Stripe Connect capability state (owner/finance)
- POST /v1/publishers/{publisherId}/connect/onboard: Create or resume Stripe Express onboarding (owner only)
- POST /v1/publishers/{publisherId}/connect/sync: Reconcile Connect state with Stripe (owner/finance)
- GET /v1/publishers/{publisherId}/members: List publisher members and roles
- POST /v1/publishers/{publisherId}/members: Add a member by handle with a role (owner only)
- DELETE /v1/publishers/{publisherId}/members/{accountId}: Remove a member (owner only)
- GET /v1/pages/product: Public product page model
- GET /v1/pages/sounds: Public sound landing page model
- GET /v1/pages/storefront: Public storefront page model
- GET /v1/posts: List root posts of a subject with inline replies
- POST /v1/posts: Create a comment or reply
- GET /v1/posts/{postId}: Read a post with its visible replies
- PATCH /v1/posts/{postId}: Edit a post or resolve a project note
- DELETE /v1/posts/{postId}: Remove a post, leaving a tombstone
- POST /v1/posts/{postId}/moderation: Remove, restore or clear the verified flag of a post (moderator)
- PUT /v1/posts/{postId}/pin: Pin or unpin a root post (subject owner, at most three)
- PUT /v1/posts/{postId}/reactions/{kind}: Set or clear a like or helpful vote
- GET /v1/posts/{postId}/replies: List every visible reply below a post
- PUT /v1/posts/{postId}/response: Create or edit the publisher response to a review
- GET /v1/posts/{postId}/revisions: List prior versions of a post (author or moderator)
- GET /v1/products/{productId}/rating-summary: Read the review rating summary of a product
- GET /v1/products/{productId}/review: Read the caller's review of a product with eligibility
- PUT /v1/products/{productId}/review: Create or edit the caller's review of a product
- GET /v1/projects: List the caller's drafts, newest first
- POST /v1/projects: Create an owned project from a validated document
- GET /v1/projects/{projectId}: Read an owned project
- PUT /v1/projects/{projectId}: Save a draft at an expected revision
- PUT /v1/projects/{projectId}/catalog: Update public discovery tags and category
- POST /v1/projects/{projectId}/operations: Apply an authoring operation batch at an expected revision
- POST /v1/projects/{projectId}/publish: Publish an immutable release
- PUT /v1/projects/{projectId}/visibility: Change listing visibility
- POST /v1/releases/{digest}/fork: Fork a release into a new owned project
- GET /v1/publishers/{handle}/storefront: Published storefront, or the draft and revisions for members with ?draft=1
- PUT /v1/publishers/{handle}/storefront/draft: Save theme tokens and sections to the draft revision
- POST /v1/publishers/{handle}/storefront/publish: Validate references and publish the draft revision
- POST /v1/publishers/{handle}/storefront/revisions/{revisionId}/restore: Copy an older revision into a new draft
- GET /v1/sounds: Search and filter public sounds (or the caller’s own with mine=1); page of 40
- GET /v1/sounds/facets: Facet counts for a sounds filter set
- GET /v1/sounds/saved: List the caller's saved sounds
- GET /v1/sounds/saved/sync: Read saved-sound events after a cursor (the library sync protocol)
- GET /v1/sounds/similar/{mediaId}: Nearest sounds by embedding, or unsupported with the reason
- GET /v1/sounds/{mediaId}: Item, current version, resolved fields with sources, renditions, counts and viewer state
- PATCH /v1/sounds/{mediaId}: Edit the catalog entry at an expected version (owner)
- DELETE /v1/sounds/{mediaId}: Remove a sound from the catalog; pinned release versions stay
- GET /v1/sounds/{mediaId}/analysis: Every analysis run of the current version with the full report
- GET /v1/sounds/{mediaId}/bytes: Original bytes as a sandboxed attachment: the owner, or anyone when reusable; counted
- POST /v1/sounds/{mediaId}/events: Play or preview beacon, bounded per address per day
- PUT /v1/sounds/{mediaId}/like: Like or unlike a sound
- GET /v1/sounds/{mediaId}/relations: Relations in both directions the caller may read
- PUT /v1/sounds/{mediaId}/relations: Relate this sound to another (owner of either side)
- DELETE /v1/sounds/{mediaId}/relations: Remove a relation (owner of either side)
- GET /v1/sounds/{mediaId}/renditions/{kind}: Rendition bytes (peaks, preview, thumbnail, score page); 404 RENDITION_NOT_READY until produced
- PUT /v1/sounds/{mediaId}/save: Save or unsave a sound (synced to hosts like library bookmarks)
- GET /v1/tone3000/library/{kind}: Read a bounded TONE3000 favorites or downloads list
- POST /v1/tone3000/models/{id}/import: Import one private TONE3000 model on request
- GET /v1/tone3000/search: Search TONE3000 NAM captures on explicit request
- GET /v1/tone3000/tones/{id}: Read TONE3000 tone metadata
- GET /v1/tone3000/tones/{id}/models: List admitted TONE3000 model architectures
- GET /v1/vault/secrets: List vault secret metadata (never values)
- POST /v1/vault/secrets: Store a secret in a slot; returns metadata only
- PUT /v1/vault/secrets/{id}: Replace a secret value atomically (new prefix and last4)
- DELETE /v1/vault/secrets/{id}: Remove a secret
