Skip to content
Developers

CLI commands for resources and workflows

Create and manage posts, events, courses, content, quests and jobs, and run RSVP, enrollment, evidence and application workflows from the hive3 CLI.

Use these commands to publish events, courses, content, quests and jobs, and to run what happens around them: RSVPs, enrollments, attendance, quest evidence and job applications. All of them print JSON. Conventions such as exit codes, --file merging and --account are on the main CLI command reference.

These commands also exist in CLI version 0.3, so nothing on this page carries the (0.4+) marker.

#Common actions

posts, events, courses, content, quests and jobs share the same five actions. Replace <kind> with the family name.

CommandWhat it doesFlagsScopes
hive3 <kind> listLists items, newest first, archived items left out.--limit <n>, --cursor <cursor>, --owner-type <type>, --community-id <id>resources:read (posts:read for posts)
hive3 <kind> get <id>Reads one item you can see.Noneresources:read (posts:read)
hive3 <kind> createCreates an item. Prints the new item as JSON.Fields, owner options and --idempotency-key belowresources:write (posts:write)
hive3 <kind> update <id>Changes fields of an item. At least one field is required.Fields below and --file; no owner optionsresources:write (posts:write)
hive3 <kind> archive <id>Archives the item; it is not deleted.Noneresources:write (posts:write)

For an item owned by a community, add communities:write to the write scopes and communities:read to reads on other accounts, and you need a current role there.

Field flagSets
--title <text>title (required for everything except posts)
--body <text>body (required for posts)
--description <text>description
--content-type <type>contentType (used by content)
--image-url <url>imageUrl
--visibility <value>public, protected or private. Anything other than public needs Honey Bee or above on the owning account.
--file <path>A JSON object with any other fields. See payload files.
Owner and list flagWhat it does
--owner-type <type>person or community. On create it picks who owns the new item. On list it only works together with --community-id; it is not a type filter.
--community-id <id>The community's account ID. Required whenever --owner-type is community.
--idempotency-key <key>Makes a retried create safe. See idempotency.

--account is not supported on these commands; use --owner-type community --community-id <account-id> to create for an account you help run, after hive3 capabilities shows it.

Things to know before you create:

  • Events need RSVP approval by default. Put "autoEnroll": true in the file to accept attendees automatically. eventSlots entries need ISO 8601 startsAt and endsAt with a Z or offset, and each end must come after its start.
  • Quests need questCreditPlan (single for quests up to 7 days, bundle for up to 30) and spend one quest credit of the owning account. A credited quest needs a valid startsAt.
  • Once an event or quest has started, update and archive return 409 conflict.
  • Plan rules apply as in the app. A Worker Bee account publishes publicly only and cannot attach subscriptions.
event.json
{
  "title": "Portfolio night",
  "description": "Bring two projects for feedback.",
  "visibility": "public",
  "autoEnroll": true,
  "location": "Online",
  "eventSlots": [
    { "startsAt": "2026-12-12T18:00:00Z", "endsAt": "2026-12-12T20:00:00Z" }
  ]
}
Create, check and archive an event
hive3 events create --file event.json --idempotency-key portfolio-night-2026
hive3 events list --limit 5
hive3 events archive "<event-id>"
Create for a community you manage
hive3 capabilities
hive3 posts create --body "Moderator update" --owner-type community --community-id "<account-id>"

#Events

CommandWhat it doesFlagsScopes
hive3 events participants <event-id>Lists RSVPs. Event managers only; the list includes primary email addresses.Noneresources:read
hive3 events rsvp <event-id>Creates your RSVP, or withdraws it.--enroll <bool> (false withdraws), --file <path>resources:write
hive3 events approve <event-id> <enrollment-id>Approves an RSVP. Needs the person's current access to the event.Noneresources:write
hive3 events deny <event-id> <enrollment-id>Denies an RSVP.Noneresources:write
hive3 events attendance <event-id> <enrollment-id>Records attendance.--attended <bool>, --file <path>resources:write

RSVPs share the app's limits of 10 per minute and 100 per day. Attendance needs an approved RSVP on an event that is not archived; the first recorded time is kept, the attendee is notified, and clearing attendance (--attended false) is refused with 409 conflict. Treat approving, denying and recording attendance as decisions that need a human check.

#Courses

CommandWhat it doesFlagsScopes
hive3 courses enrollments <course-id>Lists enrollments. Course managers only.Noneresources:read
hive3 courses enroll <course-id>Enrolls you, or withdraws.--enroll <bool>, --file <path>resources:write
hive3 courses approve <course-id> <account-id>Approves a student's enrollment. <account-id> is the student's account ID.Noneresources:write
hive3 courses deny <course-id> <account-id>Denies a student's enrollment.Noneresources:write
hive3 courses complete <course-id> <lesson-id>Marks a lesson complete for you.Noneresources:write
course.json
{
  "title": "Intro to critique",
  "description": "Four short lessons.",
  "visibility": "public",
  "lessons": [
    { "id": "lesson-1", "title": "Give useful feedback" },
    { "id": "lesson-2", "title": "Receive feedback" }
  ]
}

#Content

hive3 content has only the common actions, with --content-type <type> choosing the kind of content (the default is article).

content.json
{
  "title": "Welcome guide",
  "description": "How this community works.",
  "contentType": "article",
  "visibility": "public"
}

#Quests

CommandWhat it doesFlagsScopes
hive3 quests enrollments <quest-id>Lists enrollments. Quest managers only.Noneresources:read
hive3 quests enroll <quest-id>Enrolls you, or withdraws.--enroll <bool>, --file <path>resources:write
hive3 quests approve <quest-id> <enrollment-id>Approves an enrollment.Noneresources:write
hive3 quests deny <quest-id> <enrollment-id>Denies an enrollment.Noneresources:write
hive3 quests evidence list <quest-id>Lists submitted evidence.--status <status>, for example pendingresources:read
hive3 quests evidence submit <quest-id>Submits evidence for an objective.--objective-id <id> (required), --content <text>, --file <path>resources:write
hive3 quests evidence approve <quest-id> <evidence-id>Approves evidence.Noneresources:write
hive3 quests evidence deny <quest-id> <evidence-id>Denies evidence.Noneresources:write
quest.json
{
  "title": "Ship a portfolio page",
  "description": "Publish a page and share the link.",
  "questCreditPlan": "single",
  "startsAt": "2026-12-01T00:00:00Z",
  "endsAt": "2026-12-05T00:00:00Z",
  "objectives": [
    { "id": "objective-1", "type": "custom", "completionCriteria": "Submit a link", "evidenceType": "link" }
  ]
}

To attach a file as evidence, upload it first and reference the returned upload ID. Use the byteSize and contentType of the file you uploaded.

evidence.json
{
  "attachments": [
    { "storageId": "<upload-id>", "fileName": "proof.pdf", "contentType": "application/pdf", "byteSize": 100000 }
  ]
}
Submit and review evidence
hive3 upload ./proof.pdf --purpose document
hive3 quests evidence submit "<quest-id>" --objective-id objective-1 --content "https://proof.example" --file evidence.json
hive3 quests evidence list "<quest-id>" --status pending
hive3 quests evidence approve "<quest-id>" "<evidence-id>"

#Jobs

CommandWhat it doesFlagsScopes
hive3 jobs apply <job-id>Applies to a job. The file must contain resume.--file <path> (required)resources:write
hive3 jobs applications <job-id>Lists applications to a job. Job managers only; includes primary email addresses.Noneresources:read
hive3 jobs applicationsLists your own applications.Noneresources:read
hive3 jobs status <application-id>Changes an application's status.--status <status> (required): pending, reviewed, accepted or rejectedresources:write

resume and the optional coverLetter each need fileName, contentType and a positive byteSize, plus a storageId from hive3 upload --purpose document.

application.json
{
  "resume": { "storageId": "<upload-id>", "fileName": "resume.pdf", "contentType": "application/pdf", "byteSize": 124000 },
  "coverLetter": { "storageId": "<upload-id>", "fileName": "cover-letter.pdf", "contentType": "application/pdf", "byteSize": 84000 }
}
job.json
{
  "title": "Community manager",
  "description": "Run weekly events and welcome new members.",
  "employerName": "Design Guild",
  "location": "Remote",
  "visibility": "public"
}

Participant, enrollment and application lists include each person's primary email address when you manage the resource. Keep that output out of logs, chats and prompts.