curl --request POST \
--url https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"force": false
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds"
payload = {
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
style_profile_hash: '<string>',
branch: '<string>',
environment_name: '<string>',
release_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
force: false
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds', 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.veryfront.com/projects/{project_reference}/style-artifacts/current/builds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'style_profile_hash' => '<string>',
'branch' => '<string>',
'environment_name' => '<string>',
'release_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'force' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.veryfront.com/projects/{project_reference}/style-artifacts/current/builds"
payload := strings.NewReader("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}"
response = http.request(request)
puts response.read_body{
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"etag": "<string>",
"content_type": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>",
"updated_at": "<string>"
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}Start style artifact build
Start a background build of the compiled CSS artifact for a branch, environment or release unless one is ready or building; returns the style artifact record. Requires project.files.write.
curl --request POST \
--url https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"force": false
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds"
payload = {
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"force": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
style_profile_hash: '<string>',
branch: '<string>',
environment_name: '<string>',
release_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
force: false
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds', 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.veryfront.com/projects/{project_reference}/style-artifacts/current/builds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'style_profile_hash' => '<string>',
'branch' => '<string>',
'environment_name' => '<string>',
'release_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'force' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.veryfront.com/projects/{project_reference}/style-artifacts/current/builds"
payload := strings.NewReader("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current/builds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"force\": false\n}"
response = http.request(request)
puts response.read_body{
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"etag": "<string>",
"content_type": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>",
"updated_at": "<string>"
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}Authorizations
Use a JWT bearer token or a Veryfront API key in the Authorization header.
Path Parameters
Project slug, UUID, or domain that identifies the project.
Body
Style profile identifier used with the selector to find current metadata.
1Branch name. Exactly one of branch, environment_name, or release_id is required. Main may be implicit before its branch row exists; other branch and environment names must exist in the project or the request returns 404.
1Environment name. Exactly one selector is required.
1Release UUID. Exactly one selector is required.
Queue a new build even when current metadata is ready or building.
Response
Current style artifact build state. A ready or building artifact is reused unless force is true; otherwise a background build is enqueued.
Current metadata state. Missing means no record exists; building does not confirm completion.
ready, missing, building, failed Registered CSS artifact hash, omitted when not available.
Registered CSS asset path, omitted when not available.
Registered CSS asset entity tag, omitted when not available.
Registered CSS asset MIME type, omitted when not available.
Style build run identifier, when available.
1Persisted failure detail, omitted when not available.
Latest metadata update timestamp; omitted for missing metadata.