/api/server/settings

Get or update server-wide configuration settings.

Info

This endpoint requires authentication.

Info

This endpoint requires administrator privileges or higher.

Info

Settings that change data on the dashboard (like websiteTitle) may or may not show up after updating them through this route. Unfortunately, there is nothing you can do about this as the API acts separately from the dashboard, while the built in settings page updates the dashboard through Next.js router revalidation (which is not possible through an API). The only way to ensure the dashboard reflects these new changes is to restart the server.

GET
Request

Retrieve the current server settings.

Response

Status: 200 OK

Content-Type: application/json

Returns an object containing server settings. Refer to schema.prisma for the full schema (Look for model Zipline).

Example

{
"coreReturnHttpsUrls": false,
"coreDefaultDomain": null,
"coreTempDirectory": "/var/folders/9g/fng4z2cd22b_cf99gtw8k73w0000gn/T/zipline",
"chunksEnabled": true,
"chunksMax": "95mb",
"chunksSize": "25mb",
"tasksDeleteInterval": "30m",
"tasksClearInvitesInterval": "30m",
"tasksMaxViewsInterval": "30m",
"tasksThumbnailsInterval": "30m",
"tasksMetricsInterval": "30m",
"filesRoute": "/u",
"filesLength": 6,
"filesDefaultFormat": "random",
"filesDisabledExtensions": [],
"filesMaxFileSize": "100mb",
"filesDefaultExpiration": null,
"filesAssumeMimetypes": false,
"filesDefaultDateFormat": "YYYY-MM-DD_HH:mm:ss",
"filesRemoveGpsMetadata": false,
"filesRandomWordsNumAdjectives": 2,
"filesRandomWordsSeparator": "-",
"urlsRoute": "/go",
"urlsLength": 6,
"featuresImageCompression": true,
"featuresRobotsTxt": true,
"featuresHealthcheck": true,
"featuresUserRegistration": false,
"featuresOauthRegistration": false,
"featuresDeleteOnMaxViews": true,
"featuresThumbnailsEnabled": true,
"featuresThumbnailsNumberThreads": 4,
"featuresMetricsEnabled": true,
"featuresMetricsAdminOnly": false,
"featuresMetricsShowUserSpecific": true,
"featuresVersionChecking": true,
"featuresVersionAPI": "https://zipline-version.diced.sh",
"invitesEnabled": true,
"invitesLength": 6,
"websiteTitle": "Zipline",
"websiteTitleLogo": null,
"websiteExternalLinks": [
{
"url": "https://github.com/diced/zipline",
"name": "GitHub"
},
{
"url": "https://zipline.diced.sh/",
"name": "Documentation"
}
],
"websiteLoginBackground": null,
"websiteLoginBackgroundBlur": true,
"websiteDefaultAvatar": null,
"websiteTos": null,
"websiteThemeDefault": "system",
"websiteThemeDark": "builtin:dark_gray",
"websiteThemeLight": "builtin:light_gray",
"oauthBypassLocalLogin": false,
"oauthLoginOnly": false,
"oauthDiscordClientId": null,
"oauthDiscordClientSecret": null,
"oauthDiscordRedirectUri": null,
"oauthGoogleClientId": null,
"oauthGoogleClientSecret": null,
"oauthGoogleRedirectUri": null,
"oauthGithubClientId": null,
"oauthGithubClientSecret": null,
"oauthGithubRedirectUri": null,
"oauthOidcClientId": null,
"oauthOidcClientSecret": null,
"oauthOidcAuthorizeUrl": null,
"oauthOidcTokenUrl": null,
"oauthOidcUserinfoUrl": null,
"oauthOidcRedirectUri": null,
"mfaTotpEnabled": false,
"mfaTotpIssuer": "Zipline",
"mfaPasskeys": true,
"ratelimitEnabled": true,
"ratelimitMax": 10,
"ratelimitWindow": null,
"ratelimitAdminBypass": true,
"ratelimitAllowList": [],
"httpWebhookOnUpload": null,
"httpWebhookOnShorten": null,
"discordWebhookUrl": null,
"discordUsername": null,
"discordAvatarUrl": null,
"discordOnUploadWebhookUrl": null,
"discordOnUploadUsername": null,
"discordOnUploadAvatarUrl": null,
"discordOnUploadContent": null,
"discordOnUploadEmbed": null,
"discordOnShortenWebhookUrl": null,
"discordOnShortenUsername": null,
"discordOnShortenAvatarUrl": null,
"discordOnShortenContent": null,
"discordOnShortenEmbed": null,
"pwaEnabled": false,
"pwaTitle": "Zipline",
"pwaShortName": "Zipline",
"pwaDescription": "Zipline",
"pwaThemeColor": "#000000",
"pwaBackgroundColor": "#000000"
}

PATCH
Request

Update server settings. Some settings need a restart to take effect, which are noted on the settings page. Every setting is validated, and if any setting is invalid, the server will return with a 400 Bad Request error with details and paths of the invalid settings.

Body

Content-Type: application/json

A partial object containing the settings to update. Refer to the example above, or the schema.prisma file for the full schema (Look for model Zipline).

Example

Change the website title:

{
"websiteTitle": "My Zipline Server"
}

Error Responses

  • 400 Bad Request

    If the request body is invalid or contains invalid settings. The response will include details about which settings are invalid.

{
"statusCode": 400,
"issues": [
{
"code": "custom",
"message": "Directory does not exist",
"path": ["coreTempDirectory"]
}
]
}


Last updated: 6/1/2025
Edit this page on GitHub