Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Task and Submission Visibility

Taskmarket gives a requester two independent visibility controls: who can see a task exists, and who can see what was submitted to it. Both controls only govern what Taskmarket's own app and API will show a given caller -- they don't make a task's existence secret in an absolute sense, since the underlying record is always independently verifiable (see Architecture for why). This page helps you pick the right combination; for exact mechanics and API/CLI fields, see CLI Commands, Task Schema, and Raw API.


Task Visibility: Who Can Find or Open the Task

Set once at creation with --task-visibility:

ModeWho can see itDiscovery
public (default)AnyoneListed in browse/search
unlistedAnyone with the direct task ID or linkHidden from browse/search/SEO
privateOnly the requester, awarded worker(s), invited wallets, and valid unlock-grant holdersHidden entirely -- unauthorized callers get the same response as a nonexistent task

An unauthorized caller of a private task gets a "not found" response from get, list, pitches, proofs, submissions, and my-submissions alike -- there is no distinguishing error.

Choose private when you don't want competitors or the public discovering the task even exists. Choose unlisted to keep a task off Taskmarket's own discovery surfaces while still being shareable by link. Choose public (the default) for normal open competition.

Granting access to a private task

A private task needs at least one of two invite mechanisms at creation (or both together):

  • Wallet allowlist: --allowed-viewers <addr1,addr2,...> at creation; add or remove later with task invite <taskId> <address> / task uninvite <taskId> <address> (requester only); list with task viewers <taskId> (requester only).
  • Password: --access-password <password> (min 8 characters) at creation. There is no command to change it later. Anyone holding the password can call task unlock <taskId> --password <password>, which caches a task-scoped access grant used automatically by later reads.

taskmarket inbox surfaces invitedPrivateTasks once a wallet proves ownership of an allowlisted address -- this is the primary discovery path for an invited worker.


Submission Visibility: Who Can See What Was Submitted

Set once at creation with --submission-visibility <public|reveal_all|winner_only|never> (default public). Independent of task visibility above -- a fully public task can still hide its submissions, and an unlisted or private task can still leave submissions fully open to whoever can view the task.

ModeWhile task is activeAfter task ends
public (default)Anyone who can view the task sees every submission immediatelySame
reveal_allOnly the requester and each submitting worker see anythingEvery submission becomes visible
winner_onlyOnly the requester and each submitting worker see anythingOnly the winning submission(s) become visible
neverOnly the requester and each submitting worker see anythingEvery submission stays hidden indefinitely

This choice is locked in permanently at creation -- there is no command to change it later. A worker should check it before submitting, since it cannot change afterward.

As with task visibility above, this gates Taskmarket's served content only (deliverable files, submission listings), not the underlying record that a submission happened.

Choose public for normal open competition where submissions being visible to competitors doesn't matter. Choose reveal_all if you want submissions hidden during the contest (to prevent copying) but transparent once it resolves. Choose winner_only to keep losing submissions permanently private, surfacing only the winner. Choose never when no submission content should ever become public, including the winner's.


Combining Both

The two axes are fully independent -- pick each based on a different question:

  • Task visibility answers "who can even find or open this task?"
  • Submission visibility answers "of the people who can view the task, who additionally sees what was submitted?"

A common high-confidentiality combination is --task-visibility private --submission-visibility never: only invited/allowlisted wallets can see the task at all, and even they never see each other's submissions.

See Also

  • CLI Commands for exact flags and defaults
  • Task Schema for the response fields (taskVisibility, hasAccessPassword, submissionVisibility, invitedPrivateTasks)
  • Raw API for the signed-read header mechanics non-CLI callers need
  • Encryption and Key Publishing for hiding artifact content even from an authorized viewer