---
title: "Publish Hackathon"
method: POST
path: "/v1/marketplace/hackathon"
tags: ["marketplace"]
---

# Publish Hackathon

`POST /v1/marketplace/hackathon`

Publish a hackathon submission (hackathon.kodik.ru) from previously-uploaded
files.

Upload each file first via the media flow (`POST /marketplace/media/upload-session`
→ `/media/{assetId}/complete`), then POST here with the resulting `attachments`
(assetId + label + kind). At least one attachment is required. The entry lands in
`submitted` and goes through the same admin review as every other item.

## Request body

- HackathonPublishRequest
  - `title` string, required
  - `description` string, required
  - `tags` string[], nullable
  - `eventName` string, nullable
  - `teamName` string, nullable
  - `trackName` string, nullable
  - `repositoryUrl` string, nullable
  - `demoUrl` string, nullable
  - `framework` string, nullable
  - `runtime` string, nullable
  - `isFree` boolean
  - `price` number — Price in credits (ignored when free)
  - `attachments` HackathonAttachmentInput[], required
    - `assetId` string, required
    - `label` string, nullable
    - `kind` 'source' | 'document' | 'video' | 'image' | 'other'

## Response `201`

Successful Response

- MarketplaceItemResponse
  - `type` 'code' | 'course' | 'tutorial' | 'skill' | 'prompt' | 'rule' | 'template' | 'project' | 'hackathon', required
  - `title` string, required
  - `description` string, required
  - `tags` string[], nullable
  - `content` string, nullable
  - `thumbnail_url` string, nullable
  - `version` string, required
  - `license` string, required
  - `isFree` boolean
  - `price` number
  - `currency` string
  - `id` string, required
  - `author` string, required
  - `authorId` integer, required
  - `rating` number, required
  - `ratingCount` integer, required
  - `downloads` integer, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `featured` boolean
  - `verified` boolean
  - `status` 'draft' | 'submitted' | 'approved' | 'rejected' | 'unpublished'
  - `submittedAt` string, date-time, nullable
  - `reviewedAt` string, date-time, nullable
  - `rejectionReason` string, nullable
  - `hasAccess` boolean, nullable
  - `attachments` MarketplaceAttachment[], nullable
    - `assetId` string, required
    - `label` string, required
    - `kind` string, required
    - `fileName` string, required
    - `contentType` string, required
    - `sizeBytes` integer, required
    - `downloadUrl` string, nullable
    - `thumbnailUrl` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/kodik/apis/kodik-api.md) · [All operations](https://skmtc.dev/kodik/apis/kodik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kodik/kodik-api/revisions/55c71b347360/schema)
