curl --request PUT \
--url https://api.us.cr4ce.com/tab/{tab_slug} \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"translated": {
"name": {
"en_GB": "Your details"
}
},
"order": 40,
"visible_to_applicants": true
}
'import requests
url = "https://api.us.cr4ce.com/tab/{tab_slug}"
payload = {
"translated": { "name": { "en_GB": "Your details" } },
"order": 40,
"visible_to_applicants": True
}
headers = {
"Accept": "<accept>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
Accept: '<accept>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
translated: {name: {en_GB: 'Your details'}},
order: 40,
visible_to_applicants: true
})
};
fetch('https://api.us.cr4ce.com/tab/{tab_slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.cr4ce.com/tab/{tab_slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'translated' => [
'name' => [
'en_GB' => 'Your details'
]
],
'order' => 40,
'visible_to_applicants' => true
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.us.cr4ce.com/tab/{tab_slug}"
payload := strings.NewReader("{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.us.cr4ce.com/tab/{tab_slug}")
.header("Accept", "<accept>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.cr4ce.com/tab/{tab_slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Accept"] = '<accept>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}"
response = http.request(request)
puts response.read_body{
"categories": [
{
"slug": "KlMnOpQr",
"link": "https://api.au.cr4ce.com/category/KlMnOpQr",
"name": {
"en_GB": "Documentary"
}
}
],
"category_option": "select",
"content_block": null,
"created": "2024-12-12T09:41:21Z",
"field_count": 6,
"form": "GhIjKlMn",
"locked": false,
"name": {
"en_GB": "About you"
},
"order": 20,
"resource": "applications",
"season": {
"slug": "EfGhIjKl",
"link": "https://api.au.cr4ce.com/season/EfGhIjKl",
"name": {
"en_GB": "2026"
}
},
"settings": null,
"slug": "StUvWxYz",
"tab_divider_on_pdfs": true,
"type": "fields",
"updated": "2026-04-13T13:45:50Z",
"visible_to_applicants": true
}{
"message": "<string>",
"status_code": 400
}{
"message": "<string>",
"status_code": 401
}{
"message": "<string>",
"status_code": 403
}{
"message": "<string>",
"status_code": 404
}{
"message": "<string>",
"status_code": 422,
"errors": {}
}{
"message": "<string>",
"status_code": 429
}{
"status": "Maintenance in progress"
}Update tab
Update the tab identified by the specified slug.
curl --request PUT \
--url https://api.us.cr4ce.com/tab/{tab_slug} \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"translated": {
"name": {
"en_GB": "Your details"
}
},
"order": 40,
"visible_to_applicants": true
}
'import requests
url = "https://api.us.cr4ce.com/tab/{tab_slug}"
payload = {
"translated": { "name": { "en_GB": "Your details" } },
"order": 40,
"visible_to_applicants": True
}
headers = {
"Accept": "<accept>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
Accept: '<accept>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
translated: {name: {en_GB: 'Your details'}},
order: 40,
visible_to_applicants: true
})
};
fetch('https://api.us.cr4ce.com/tab/{tab_slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.cr4ce.com/tab/{tab_slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'translated' => [
'name' => [
'en_GB' => 'Your details'
]
],
'order' => 40,
'visible_to_applicants' => true
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.us.cr4ce.com/tab/{tab_slug}"
payload := strings.NewReader("{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.us.cr4ce.com/tab/{tab_slug}")
.header("Accept", "<accept>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.cr4ce.com/tab/{tab_slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Accept"] = '<accept>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"translated\": {\n \"name\": {\n \"en_GB\": \"Your details\"\n }\n },\n \"order\": 40,\n \"visible_to_applicants\": true\n}"
response = http.request(request)
puts response.read_body{
"categories": [
{
"slug": "KlMnOpQr",
"link": "https://api.au.cr4ce.com/category/KlMnOpQr",
"name": {
"en_GB": "Documentary"
}
}
],
"category_option": "select",
"content_block": null,
"created": "2024-12-12T09:41:21Z",
"field_count": 6,
"form": "GhIjKlMn",
"locked": false,
"name": {
"en_GB": "About you"
},
"order": 20,
"resource": "applications",
"season": {
"slug": "EfGhIjKl",
"link": "https://api.au.cr4ce.com/season/EfGhIjKl",
"name": {
"en_GB": "2026"
}
},
"settings": null,
"slug": "StUvWxYz",
"tab_divider_on_pdfs": true,
"type": "fields",
"updated": "2026-04-13T13:45:50Z",
"visible_to_applicants": true
}{
"message": "<string>",
"status_code": 400
}{
"message": "<string>",
"status_code": 401
}{
"message": "<string>",
"status_code": 403
}{
"message": "<string>",
"status_code": 404
}{
"message": "<string>",
"status_code": 422,
"errors": {}
}{
"message": "<string>",
"status_code": 429
}{
"status": "Maintenance in progress"
}Authorizations
API key used to authenticate and authorise every request.
Include it in the x-api-key header.
Headers
Defines the response type.
application/vnd.Creative Force.v2.3+json, application/vnd.Creative Force.v2.3+xml Defines the languages included in the response. If non are provided, the account default language is returned.
Value all overrides any other values present.
You can request multiple languages using a comma-separated string of languages.
The selected language must be supported by your account or a 400 error is returned.
all, ar_AR, bg_BG, bn_IN, ca_ES, cs_CZ, cy_GB, da_DK, de_DE, en_GB, en_US, el_GR, es_NN, es_LA, et_EE, fa_NN, fi_FI, fr_FR, fr_CA, he_IL, hi_IN, hr_HR, hu_HU, hy_AM, it_IT, ja_JP, ko_KR, lt_LT, ms_MY, nl_NL, nb_NO, pl_PL, pt_BR, ro_RO, ru_RU, sk_SK, sl_SI, sq_AL, sr_RS, sv_SE, sw_NN, th_TH, tr_TR, uk_UA, vi_VN, zh_CN, zh_HK Path Parameters
Slug of the tab.
^[A-Za-z]{8}$Body
Tab update payload.
The form, season, type, and resource of a tab are fixed when you create it and you cannot change them here.
Translated tab values keyed by field name.
Show child attributes
Show child attributes
Array of category slugs the tab is shown in.
Applies when category_option is select. Each category must belong to the season for the tab.
^[A-Za-z]{8}$How categories are applied to the tab.
all- Show the tab in every category.select- Show the tab only in the categories listed incategories.
all, select Slug of the content block shown at the top of the tab, or null to remove the assigned content block.
Must be a content block of the "Tab info box" type.
^[A-Za-z]{8}$Position of the tab within the form, where lower values appear first.
Position 1 is reserved for the locked details tab. A 422 response is returned when you send this value for a locked tab.
x >= 2Configuration that applies only to one type of tab.
Each type accepts its own settings and rejects the rest, so sending min_referees to an attachments tab is a 422. A details or fields tab accepts no settings at all.
Send only the settings you are changing. The rest keep their current values.
Changing assessment_mode on an eligibility tab requires the settings the new mode uses, unless the tab already stores them: min_eligibility_score for auto or both, and pending_eligibility_content_block for manual or both.
Show child attributes
Show child attributes
Specifies whether generated PDF documents include a divider page for the tab.
Specifies whether applicants see the tab.
A tab hidden from applicants stays visible to program managers.
Response
Tab updated.
Section of a form that groups what is collected from applicants, such as application details, custom fields, attachments, contributors, or referees.
Categories the tab is shown in, or ["*"] when it is shown in every category.
category_option says which of the two a tab is using, so read that rather than testing for the marker. The same shape is used by the categories property of a field.
Show child attributes
Show child attributes
How categories are applied to the tab.
all- Shown in every category.select- Shown only in the categories listed incategories.
all, select Content block shown at the top of the tab, or null when no content block is assigned.
Show child attributes
Show child attributes
Date and time when the tab was created.
Number of fields attached to the tab.
Slug of the form the tab belongs to.
^[A-Za-z]{8}$Specifies whether the tab is locked.
A locked tab always holds position 1 and you cannot reorder or delete it.
Display name of the tab, as a map of translated strings keyed by locale code.
Show child attributes
Show child attributes
Position of the tab within the form, where lower values appear first.
Resource the tab collects data for.
applications- Part of an application form.users- Part of the user profile form.
applications, users Season the tab belongs to.
Show child attributes
Show child attributes
Configuration that applies only to this type of tab, or null for a type that carries none, such as a details or fields tab.
Each type populates its own properties and omits the rest: an attachments tab carries the upload limits, an eligibility tab the assessment and communication settings, a referees tab the reference limits, and a contributors tab the contributor limits.
These are the limits the applicant form applies. Apply them in your own interface so that applicants do not upload files the form would refuse.
Show child attributes
Show child attributes
{
"allowed_file_types": {
"images": ["jpg", "png"],
"video": ["mp4"]
},
"accept_attachment_links": false,
"min_attachments": 1,
"max_attachments": 10,
"min_filesize": null,
"max_filesize": 25,
"min_video_length": null,
"max_video_length": 120,
"image_dimension_constraints": {
"min_width": 800,
"max_width": 4000,
"min_height": 600,
"max_height": 4000
}
}
Short URL-safe identifier for the tab.
Specifies whether generated PDF documents include a divider page for the tab.
Type of the tab, which determines what the tab collects.
details- Core application details, such as the application title and the category the application is submitted to.attachments- Supplementary files uploaded against the application.contributors- People credited on the application alongside the applicant.fields- Answers to the custom fields on the form.eligibility- Answers used to assess whether the application is eligible.referees- Referees asked to provide a reference for the application.
details, attachments, contributors, fields, eligibility, referees Date and time when the tab was last updated.
Specifies whether applicants see the tab.
A tab hidden from applicants stays visible to program managers, so use it to collect information applicants do not manage themselves.