---
title: "取一场报名活动详情（简介 / 时间地点名额 / 题目表 / 长图）"
method: GET
path: "/v1/signup/activities/{slug}"
tags: ["报名"]
---

# 取一场报名活动详情（简介 / 时间地点名额 / 题目表 / 长图）

`GET /v1/signup/activities/{slug}`

## Request

- Base URL: `https://api.opcmenu.com`
- URL: `https://api.opcmenu.com/v1/signup/activities/{slug}`
- Auth: none declared

用户对某一场感兴趣、或要判断「能不能报、要准备什么」时调它：一次拿全公开详情—— 简介、开始与结束时间、地点、名额、长图、报名题目表（formSchema）与答疑说明。 口径与坑：① formSchema 里 type=file 的题（如商业计划书）必须用户自己去报名页传， 任何 agent 通道都传不了文件，**绝不许瞎编「已填」或塞个链接冒充**。 ② signup.externalIsCanonical=true 表示正式报名在主办方的外部表单上（externalUrl）， 站内提交只是留资＋代填，如实告诉用户。③ requiresPhoneVerification=true 的自办活动要验手机号， 只能去 App 或报名页 https://opcmenu.com/e/{slug} 报。④ 已截止的场次仍能读到（status=ENDED）， 判「还能不能报」看 registrationDeadline，不是看能不能取到详情。 ⑤ 匿名调用时 submitted 恒为 false；「我还缺哪几题 / 报没报过」要登录，走 MCP 的 get_signup_activity。

## Path parameters

- `slug` string, required

## Response `200`

报名活动详情

- object
  - `ok` boolean
  - `data` object
    - `activity` SignupActivityDetail: 详情比卡片多出：简介、长图、地点/结束时间/名额、题目表与答疑说明
      - `id` string
      - `slug` string: 活动 slug（传给 getSignupActivity）
      - `title` string
      - `kind` 'HACKATHON' | 'COMPETITION' | 'INCUBATOR' | 'FUNDING' | 'COMMUNITY' | 'EVENT' | 'OTHER': 报名类目（同 listSignupFeed 的 kind 枚举）
      - `coverUrl` string, nullable
      - `organizerName` string, nullable: 主办方名称（文本，未必是站内账号）
      - `organizer` object, nullable: 站内主办方账号（外部导入的赛事为 null）
        - `id` string
        - `nickname` string, nullable
        - `avatarUrl` string, nullable
      - `city` string, nullable
      - `track` string, nullable: 赛道 / 主题
      - `rewards` string, nullable: 奖项 / 权益（自由文本）
      - `startAt` string, date-time: 开始时间；startAtKnown=false 时是兜底值，别念给用户
      - `registrationDeadline` string, date-time, nullable: 报名截止时间；null=长期有效（排序时排最后）
      - `pinned` boolean: 是否置顶（独行录自办/承办）
      - `startAtKnown` boolean: startAt 是不是主办方公布的真实时间；false=导入时兜底顶上的假值，不要展示那个日期
      - `signup` object: 报名方式
        - `canOneClick` boolean: 是否已解析出可用表单（能一键报名）
        - `requiresLogin` boolean: 是否必须登录才能报
        - `hostedEnabled` boolean: 是否由独行录托管报名
        - `externalUrl` string, nullable: 主办方的外部报名表单地址
        - `externalIsCanonical` boolean: true=正式报名在主办方那边，站内提交只是留资＋代填
      - `submitted` boolean: 当前用户报没报过；本 spec 匿名调用恒为 false
      - `status` 'PUBLISHED' | 'ENDED': PUBLISHED=在架；ENDED=已结束（仍可读，CTA 显示已截止）
      - `description` string, nullable: 活动简介全文
      - `posterUrls` object[]: 活动长图（主办方推文长图），按 w/h 先占位再加载
        - `url` string
        - `w` integer: 宽（0=未知，按容器宽度自适应）
        - `h` integer: 高（0=未知）
      - `location` string, nullable: 线下地点
      - `endAt` string, date-time, nullable: 结束时间
      - `capacity` integer, nullable: 名额
      - `articleUrls` string[]: 主办方原文链接（公众号推文等）
      - `formSchema` SignupFormField[]: 报名题目表；据此判断「要准备什么材料」
        - `key` string: 题目 key（跨活动稳定）
        - `label` string: 题面
        - `type` 'text' | 'textarea' | 'select' | 'multiselect' | 'phone' | 'email' | 'url' | 'number' | 'date' | 'file': 题型：text/textarea=文本；select/multiselect=选项；phone/email/url/number/date=对应格式； file=附件题（如商业计划书），只能用户自己去报名页传。
        - `required` boolean: 是否必填
        - `options` string[]: 可选项（select/multiselect 才有）
        - `hint` string, nullable: 题面下的一行提示
        - `sourceLabel` string, nullable: 源表单里的原始题面（含说明文字）
        - `sensitive` boolean: 是否敏感个人信息（答案加密存储，快照只留打码值）
      - `contactQrUrl` string, nullable: 答疑/组队群二维码
      - `contactNote` string, nullable: 答疑说明
      - `requiresPhoneVerification` boolean: true=自办活动要验手机号，只能去 App 或报名页报
      - `hasSensitiveFields` boolean: 是否含敏感题（身份证号/手机号/微信号这类，答案加密存储）

## Other responses

- `404`: 未找到（slug 不存在、无报名配置、或已被主办方取消 / 下架）

---

[API](https://skmtc.dev/opcmenu/apis/opc-api.md) · [All operations](https://skmtc.dev/opcmenu/apis/opc-api/llms.txt) · [OpenAPI document](https://skmtc.dev/opcmenu/apis/opc-api/revisions/ccdee07fb248?raw)
