跳到主要内容

v1 API 编辑表单主题

API使用者,可以通过本接口,修改表单的视觉主题(颜色、壁纸、header、字体、表单容器、提交按钮),或通过 AI 生成 header 图

功能免费版专业版/专业增强版企业基础版企业协作版企业高级版
编辑表单主题✔️✔️✔️✔️✔️

认证方式​

V1 Bearer 认证方式

headers 设置​

需要在请求中设置如下 headers

  • Content-Type: application/json
  • Accept: application/json
  • Authorization: Bearer YOUR_ACCESS_TOKEN

接口说明​

  • 个人版用户/企业子账号用户,只可以编辑 自己创建 的表单主题。
  • 企业全局 API,可以编辑整个企业所有的表单主题。
  • typography / form_container / submit_button 的样式是合并而非覆盖,只传你要改的字段即可。
  • 传入 generate_header_image 可自动调用 AI 生成头图并应用,需消耗 AI 点数。
  • 至少要传一个主题操作,否则返回 400。

接口描述​

Request​

PATCH https://jinshuju.net/api/v1/forms/FORM_TOKEN/theme

{
"primary_color": "#FBBF24",
"secondary_color": "#FDE68A",
"wallpaper": { "background_color": "#FFFBEB" },
"header": {
"type": "text",
"text": "2026 Q2 客户满意度调研",
"text_style": {
"font_size": "24px",
"font_weight": "bold",
"color": "#111827",
"text_align": "center"
},
"background_color": "#FEF3C7"
},
"typography": {
"form_header": { "font_size": "32px", "color": "#B45309", "text_align": "center" },
"field_label": { "font_size": "14px", "color": "#92400E" },
"choice_style": { "color": "#78350F" }
},
"form_container": { "background_color": "#FFFFFF" },
"submit_button": {
"background_color": "#F59E0B",
"color": "#FFFFFF",
"font_size": "16px"
},
"generate_header_image": { "prompt": "温暖的秋季山景,扁平插画风" }
}
参数名称是否必须类型说明
FORM_TOKEN是String表单 Token(URL 路径参数)
primary_color否String主色(hex)
secondary_color否String次色(hex)
wallpaper否Object页面背景设置
wallpaper.background_color否String页面背景色(hex)
wallpaper.background_image_url否String背景图 URL,由服务端抓取
wallpaper.background_image_upload_token否String「上传表单图片」的 form_image_token(用途 wallpaper),优先级最高
wallpaper.background_image_attachment_id否String / null「上传表单图片」返回的 attachment_id;传 "" 移除背景图,优先级最低
header否Object顶部 banner 设置
header.type否Stringbanner 展示类型:none / text / image / carousel
header.text否Stringbanner 文字(type=text 时生效)
header.background_color否Stringbanner 背景色(hex)
header.text_style否Objectbanner 文字样式
header.text_style.*否String键为样式名(下划线命名,如 font_size),值为样式值
header.header_image_url否String外链图片 URL,服务端会下载为附件
header.header_image_base64否StringBase64 编码的图片,不建议使用(可能被截断)
header.header_image_upload_token否String「上传表单图片」的 form_image_token(用途 header),优先级最高
header.carousel_images否Array(Object)轮播图,1 ~ 5 张,整体替换;每项三种来源选其一
header.carousel_images[].image_upload_token否String「上传表单图片」的 form_image_token(用途 carousel)
header.carousel_images[].image_url否String轮播图 URL,由服务端抓取
header.carousel_images[].attachment_id否String该表单已有轮播图的 attachment_id,用于保留该图
header.header_image_attachment_id否String / null「上传表单图片」返回的 attachment_id;传 "" 移除头图,优先级最低
typography否Object字体样式,与现有样式合并
typography.form_header否Object表单标题文字样式
typography.form_header.*否String键为样式名(下划线命名,如 font_size),值为样式值
typography.field_label否Object字段 label 样式
typography.field_label.*否String键为样式名(下划线命名,如 font_size),值为样式值
typography.choice_style否Object选项文字样式
typography.choice_style.*否String键为样式名(下划线命名,如 font_size),值为样式值
form_container否Object表单容器样式
form_container.background_color否String表单容器背景色(hex)
form_container.border_color否String表单容器边框颜色,如 #E5E7EB
form_container.border_width否String表单容器边框宽度,如 1px
submit_button否Object提交按钮样式
submit_button.background_color否String提交按钮背景色(hex)
submit_button.color否String提交按钮文字颜色(hex)
submit_button.font_size否String提交按钮字号
generate_header_image否Object启用 AI 生成 header 图
generate_header_image.prompt否String自定义图片提示词;不传则基于表单内容自动生成

Response​

{
"form_token": "a1B2c3",
"primary_color": "#FBBF24",
"secondary_color": "#FDE68A",
"wallpaper": {
"background_color": "#FFFBEB",
"has_background_image": false,
"background_image_url": null
},
"header": {
"type": "image",
"text": null,
"text_style": {},
"background_color": "#FEF3C7",
"has_header_image": true,
"header_image_url": "https://..."
},
"typography": { "form_header": {}, "field_label": {}, "choice_style": {}, "field_space": null },
"form_container": { "background_color": "#FFFFFF", "max_width": null, "border_color": null, "border_width": null, "shadow": null, "indent_on_large_phone": false },
"submit_button": { "background_color": "#F59E0B", "color": "#FFFFFF", "font_size": "16px", "shadow": null, "hidden": false }
}
参数名称是否必须类型说明
form_token是String表单 Token
primary_color是String / null当前主色
secondary_color是String / null当前次色
wallpaper是Object页面背景当前状态
wallpaper.background_color否String / null页面背景色(hex)
wallpaper.has_background_image否Boolean是否有背景图
wallpaper.background_image_url否String / null背景图 URL;无背景图时为 null
header是Objectbanner 当前状态,含是否有 header 图
header.type否String / nullbanner 展示类型:none / text / image / carousel
header.text否String / nullbanner 文字(type=text 时生效)
header.text_style否Object / nullbanner 文字样式,键为 CSS 连字符命名(如 font-size)
header.background_color否String / nullbanner 背景色(hex)
header.has_header_image否Boolean是否有头图
header.header_image_url否String / null头图 URL;无头图时为 null
header.carousel_images否Array(Object)轮播图,按展示顺序排列
header.carousel_images[].attachment_id是String轮播图的 attachment_id,更新时传回可保留该图
header.carousel_images[].image_url是String轮播图 URL
typography是Object表单排版当前状态,样式以 CSS 命名(font-size / font-weight / color / text-align)
typography.form_header否Object / null表单标题文字样式
typography.field_label否Object / null字段 label 样式
typography.choice_style否Object / null选项文字样式
typography.field_space否String / null字段间距
form_container是Object表单容器当前状态
form_container.background_color否String / null表单容器背景色(hex)
form_container.max_width否String / null表单容器最大宽度
form_container.border_color否String / null表单容器边框颜色,如 #E5E7EB
form_container.border_width否String / null表单容器边框宽度,如 1px
form_container.shadow否Boolean表单容器是否显示阴影
form_container.indent_on_large_phone否Boolean大屏手机上表单容器是否缩进
submit_button是Object提交按钮当前状态
submit_button.background_color否String / null提交按钮背景色(hex)
submit_button.color否String / null提交按钮文字颜色(hex)
submit_button.font_size否String / null提交按钮字号
submit_button.shadow否Boolean提交按钮是否显示阴影
submit_button.hidden否Boolean是否隐藏提交按钮

状态码​

状态码说明
200更新成功
400未指定任何主题操作;主题保存校验失败
401未认证
402当前套餐不支持 V1 API;或者 AI 点数不足
403无权限(如 OAuth scope 不足)
404表单不存在或无权访问

示例代码​

HTTP​

PATCH https://jinshuju.net/api/v1/forms/$FORM_TOKEN/theme

Content-Type: application/json
Accept: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

{
"primary_color": "#FBBF24",
"wallpaper": { "background_color": "#FFFBEB" }
}

Python​

import requests

access_token = 'YOUR_ACCESS_TOKEN'
form_token = 'YOUR_FORM_TOKEN'

response = requests.patch(
f'https://jinshuju.net/api/v1/forms/{form_token}/theme',
headers={'Authorization': f'Bearer {access_token}'},
json={
"primary_color": "#FBBF24",
"wallpaper": {"background_color": "#FFFBEB"}
}
)

print(response.text)

Ruby​

require 'net/http'
require 'uri'
require 'json'

form_token = 'YOUR_FORM_TOKEN'
uri = URI.parse("https://jinshuju.net/api/v1/forms/#{form_token}/theme")
access_token = 'YOUR_ACCESS_TOKEN'

request = Net::HTTP::Patch.new(uri, 'Content-Type' => 'application/json')
request['Authorization'] = "Bearer #{access_token}"
request.body = {
primary_color: '#FBBF24',
wallpaper: { background_color: '#FFFBEB' }
}.to_json

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end

puts(response.body)