警告
Becoder开放平台目前处于公测阶段,服务 SLA 和接口稳定性仅能提供尽力而为的支持,如有问题可与我们通过邮箱联系。
更详细的 API 文档请访问: https://becoder.com.cn/api-docs/
服务说明
Becoder开放平台的评测能力服务(RemoteJudge)。
目前仅开放 标准版 一个套餐。如果评测量大可以单独联系。
计费点
用户付费后,在一定时间内可以获得一定数量的计费点,用于使用评测服务。
  • 目前1计费点=0.02元=0.02金币;
  • 每次评测成功后,将至少扣除 1 个计费点;
  • 如果该评测的实际运行时间超过 10 秒,则每超过 10 秒(不到 10 秒的部分算作 10 秒),增扣 1 个计费点;
  • 每次评测扣除计费点的上限为 10 个计费点;
  • 评测失败时(指平台没有产生结果,不包括编译失败等情况)不扣除计费点。
服务标准
  • 服务可用性:99.99%。本项数据是指在一个月内,计划外的故障导致无法使用评测服务的时长,不超过一个月的 0.01%。
  • 可以评测所有的公共非远程提交题目,两万余道,版权题目后续以其他方式提供评测服务。
  • 提供公共题目的题面。但不会直接提供测试数据。
  • 提供技术支持服务协助接入。
  • 以1s时限的题目为例,目前评测能力为(700次 至 800 次)/分钟,提交能力为(1200次 至 1500次)/分钟。

API 说明文档

接口名称
用户登录,获取 accessToken 和 refreshToken
接口路径
/api/judge-login
请求方法
POST
鉴权方式
请求参数
参数名类型必填说明
usernamestring用户名
passwordstring密码
返回值
字段名类型说明
successboolean是否成功
accessTokenstring短期有效的访问 token(1h)
refreshTokenstring长期有效的刷新 token(7d)
计费说明
  • 登录接口不计费
接口名称
检查用户是否登录
接口路径
/api/check-login
请求方法
GET
鉴权方式
JWT Bearer Token
请求参数
HeaderAuthorizationBearer accessToken
返回值
字段名类型说明
successboolean是否成功
userobject用户实例(含id,username)
计费说明
  • 检查用户是否登录接口不计费
接口名称
查询当前用户的可用计费点
接口路径
/api/credit
请求方法
GET
鉴权方式
JWT Bearer Token
请求参数
HeaderAuthorizationBearer accessToken
返回值
字段名类型说明
successboolean是否成功
creditinteger可用计费点数量
coinnumber可用金币数量
计费说明
  • 检查当前用户可用计费点接口不计费
接口名称
刷新 accessToken
接口路径
/api/refresh-token
请求方法
POST
鉴权方式
请求参数
参数名类型必填说明
refreshTokenstring长期有效的刷新 token
返回值
字段名类型说明
successboolean是否成功
accessTokenstring短期有效的访问 token
计费说明
  • 刷新accessToken接口不计费
接口名称
提交评测任务
接口路径
/api/judge/problem
请求方法
POST
鉴权方式
JWT Bearer Token
请求参数
参数名类型必填说明
pidstring题目编号
langstring评测语言(可选值:cpp11, cpp14, cpp17等)
codestring源代码
o2boolean是否开启O2优化(默认开启,填不填都一样)
trackIdstring跟踪ID
返回值
字段名类型说明
successboolean是否成功
requestIdinteger评测请求ID
计费说明
  • 每次评测消耗 1 个计费点
  • 评测实际运行时间超过 10 秒,每超过 10 秒增加 1 个计费点,最多 10 个
  • 评测失败(无结果)不扣点
接口名称
获取评测结果
接口路径
/api/judge/result
请求方法
GET
鉴权方式
JWT Bearer Token
请求参数
参数名类型必填说明
requestIdinteger评测请求ID
返回值
字段名类型说明
successboolean是否成功
requestIdinteger评测请求ID
statusstring评测状态(如 Waiting, Accepted, Wrong Answer 等)
scorenumber得分
total_timenumber运行总时间(单位:毫秒)
max_memorynumber最大使用内存(单位:KB)
codestring用户提交的源代码
formattedCodestring格式化后的代码
languagestring评测语言
resultobject评测详细结果,结构见下表
pendingboolean是否仍在评测中
submitTimeinteger提交时间(时间戳)
userIdinteger用户ID
problemIdinteger题目ID
creditDeductedinteger本次实际扣除的计费点(首次查成功时为正,后续为0)
coinDeductednumber本次实际扣除的金币(首次查成功时为正,后续为0)
messagestring评测失败时的提示信息
计费说明
  • 查询评测结果计费(评测成功后只计费一次,失败不计费)
接口名称
获取评测结果(长轮询)
接口路径
/api/judge/result_polling
请求方法
GET
鉴权方式
JWT Bearer Token
请求参数
参数名类型必填说明
requestIdinteger评测请求ID
返回值
字段名类型说明
successboolean是否成功
requestIdinteger评测请求ID
statusstring评测状态(如 Waiting, Accepted, WrongAnswer, Runtime Error, PartiallyCorrect, MemoryLimitExceeded, TimeLimitExceeded, OutputLimitExceeded, FileError, RuntimeError, JudgementFailed, InvalidInteraction)
total_timenumber运行总时间(单位:毫秒)
max_memorynumber最大使用内存(单位:KB)
scorenumber得分
codestring用户提交的源代码
formattedCodestring格式化后的代码
languagestring评测语言
resultobject评测详细结果,结构见下表
pendingboolean是否仍在评测中
submitTimeinteger提交时间(时间戳,单位秒)
userIdinteger用户ID
problemIdinteger题目ID
nextPollinteger建议前端下次轮询间隔(毫秒)
creditDeductedinteger本次实际扣除的计费点(首次查成功时为正,后续为0)
coinDeductednumber本次实际扣除的金币(首次查成功时为正,后续为0)
messagestring评测失败时的提示信息
result 字段结构说明:
字段名类型说明
compileobject编译结果
compile.statusinteger编译状态(1=Compile类型,2=标准题,3=提交答案题,4=交互题)
judgeobject评测结果
judge.subtasksarray子任务列表
judge.subtasks[].casesarray测试点列表
judge.subtasks[].cases[].statusinteger测试点状态(1=Compile类型,2=标准题,3=提交答案题,4=交互题)
judge.subtasks[].cases[].resultobject测试点详细结果
judge.subtasks[].cases[].result.typeinteger结果类型(1=Accepted,2=WrongAnswer,3=PartiallyCorrect,4=MemoryLimitExceeded,5=TimeLimitExceeded,6=OutputLimitExceeded,7=FileError,8=RuntimeError,9=JudgementFailed,10=InvalidInteraction)
judge.subtasks[].cases[].result.timeinteger用时(毫秒)
judge.subtasks[].cases[].result.memoryinteger内存(KB)
judge.subtasks[].cases[].result.userErrorstring用户程序错误输出
judge.subtasks[].cases[].result.userOutputstring/null用户输出
judge.subtasks[].cases[].result.scoringRatenumber得分率
judge.subtasks[].cases[].result.spjMessagestring/nullSPJ消息
judge.subtasks[].cases[].result.inputobject输入文件信息
judge.subtasks[].cases[].result.input.namestring输入文件名
judge.subtasks[].cases[].result.input.contentstring输入内容(部分省略)
judge.subtasks[].cases[].result.outputobject输出文件信息
judge.subtasks[].cases[].result.output.namestring输出文件名
judge.subtasks[].cases[].result.output.contentstring输出内容(部分省略)
judge.subtasks[].cases[].result.systemMessagestring系统消息(如崩溃原因)
计费说明
  • 查询评测结果计费(评测成功后只计费一次,失败不计费)