---
title: "File or update a hackathon application"
method: POST
path: "/api/hack/apply"
tags: ["hack"]
---

# File or update a hackathon application

`POST /api/hack/apply`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/hack/apply`
- Auth: one of:
  - API key in cookie `__session`
  - HTTP bearer

Clerk session or agt_ token with `hack:register` (live tier re-checked). Calls the SAME `apply()` as the MCP tool, keyed by the SAME member id, so an application filed here is indistinguishable to the reviewer from one an agent filed. Re-posting while `applied` updates in place. A token with no tied Immersive Commons identity is refused 401 - there is nobody to file the application as.

## Request body

- HackApplyRequest
  - `eid` string: Event id. Defaults to the current hackathon.
  - `applicant_type` string, required: One of the `types` returned by the GET.
  - `answers` object, required: Keyed by the question ids in `form`. Validated by the same function the MCP path uses.

## Response `200`

The stored application.

- HackApplyResponse
  - `ok` boolean, required
  - `application` object, required: The stored application. Re-posting while applied updates it in place.

## Other responses

- `400`: Invalid JSON, unknown applicant type, or answers that fail validation.
- `401`: No auth, or a token with no tied member identity.
- `403`: Scope/tier not authorized.
- `404`: No such event.
- `409`: The application phase is not OPEN.
- `413`: Body over the ceiling.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
