Create a repository branch - Spacefast Docs
Create a repository branch
Creates a branch starting from baseRef and returns the commit it points at. For a branch meant to be thrown away after a preview or an agent edit, use the ephemeral-branch operation instead.
POST /v1/spaces/{spaceId}/source/branches
Authorization
Authorization: Bearer <token> with an API key (sfa_ prefix), an OAuth access token, a session token, or a Space machine credential (sfm_ prefix).
or
Authorization: OAuth2 access token · header required
OAuth 2.0 with Spacefast scopes. People use the authorization code flow; machines use client credentials.
Scopes: spaces:write
Path parameters
spaceId string required
Request body
required application/json
connectionType string required
Allowed: connected hosted
branch string required
Name for the new branch.
min length 1
baseRef string
Branch, tag, or commit the new branch starts from. Omit to start from the repository's default branch.
min length 1
Responses
201 Response for status 201
$schema string
Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.
data object required
Show properties Hide properties
branch object required
namestring requiredcommitShastring requiredmessagestring required
repositoryConnection object required
idstring required
Source connection ID (rpc_ prefix).
spaceIdstring required
Space this connection feeds.
providerstring required
Git host the repository lives on.
Allowed: github gitlab bitbucket generic
connectionTypestring required
connected for a repository linked from a Git host, hosted for the mirror Spacefast hosts and the caller pushes to.
Allowed: connected hosted
repositoryIdstring | any required
Identifier of the mirror that content reads and builds run against. Null when no mirror is bound yet.
installationIdstring | any required
GitHub App installation the connection reads through. Null for a hosted mirror.
default: null
cloneUrlConfiguredboolean required
Whether a clone URL is stored. The URL itself is not returned.
default: false
upstreamUrlConfiguredboolean required
Whether an upstream URL to pull from is stored. The URL itself is not returned.
default: false
repositoryNamestring required
Repository name without its owner.
repositoryFullNamestring required
Repository name as owner/name.
defaultBranchstring required
Branch the Git host treats as the repository default.
productionBranchstring required
Branch whose pushes produce production builds, and the ref content reads fall back to when none is given.
credentialConfiguredboolean required
Whether a Git credential is stored. The credential itself is never returned.
autoDeployProductionboolean required
Whether a push to the production branch queues a build.
autoDeployPreviewsboolean required
Whether a push to any other branch or a pull request queues a preview build.
buildSettingsobject required
Install, build, and output settings each build runs with.
Show properties Hide properties
rootDirectorystring | any required
Directory the build runs in, relative to the source root. Null builds at the root.
default: null
installDirectorystring | any required
Directory dependencies install into, relative to the source root. Null installs in the build directory.
default: null
installCommandstring | any required
Command that installs dependencies. Null lets the build runner pick one.
default: null
buildCommandstring | any required
Command that produces the output. Null lets the build runner pick one.
default: null
outputDirectorystring | any required
Directory the built output is collected from, relative to the build directory. Null lets the build runner detect it.
default: null
ignoredBuildCommandstring | any required
Command run before the build to decide whether the build is needed. Exiting 0 ends the build as skipped; any other exit code continues. Null always builds.
default: null
frameworkPresetstring | any required
Framework the source builds with, for example next or vite. Null lets the build runner detect it.
default: null
platformPresetstring | any required
Platform build convention the source follows, for example vercel or netlify. Null lets the build runner detect it.
default: null
allowUnsupportedPlatformFeaturesboolean required
Runs the build even when the source declares platform features Spacefast does not support. Defaults to false, which refuses those sources.
default: false
timeoutSecondsinteger required
Wall-clock budget for the run, in seconds. Between 60 and 7200; defaults to 900.
min 60 · max 7200 · default: 900
syncStatusstring required
idle before the first sync, syncing while one runs, ready once content reads work, failed when the last one did not finish.
Allowed: idle syncing ready failed
providerAccessStatusstring required
Whether the Git host still grants access. Anything other than active blocks builds until the caller reinstalls or reauthorizes.
default: "active"
Allowed: active suspended revoked reauthorization_required
providerAccessErrorstring | any required
What the Git host reported when access stopped working. Null while access holds.
default: null
lastSyncedAtstring| any required
ISO 8601 timestamp of the last sync that finished. Null before the first one.
lastSyncErrorstring | any required
Why the last sync failed. Null after a sync that succeeded.
syncRunIdstring | any required
Identifier of the sync in flight. Null when no sync is running.
connectedUserIdstring | any required
User who last authorized or changed the connection. Null when no user did.
createdAtstringrequired
ISO 8601 timestamp when the connection was created.
updatedAtstringrequired
ISO 8601 timestamp of the last change.
repositoryId
string required
defaultError
Every 4xx and 5xx response is one RFC 9457 problem document served as application/problem+json.
$schema
string
Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.
type
string required
URL of the documentation page for this error. Derived from code.
title
string required
Human-readable name of the error type. Derived from code.
status
integer required
HTTP status of the response, repeated in the body.
min -9007199254740991 · max 9007199254740991
detail
string required
What went wrong in this request.
code
string required
Stable snake_case error code. Match on this, not on detail.
pointer
string
RFC 6901 JSON Pointer to the request field or batch entry that failed, for example /files/37/path. Present on validation failures.
details
object
Machine-readable context keyed by the error code.
suggestions
string[]
Recovery steps safe to show to a person.
next
string[]
Commands or API requests to run next, usable as written.
requestId
string required
ID of this request, from the X-Request-Id header or generated. Quote it when contacting support.
Try it
Server
Base URL https://api.spacefast.com
Custom base URL
Overrides the selected server when set.
Authorization
Bearer token
Remember on this device
Include my values in samples
Parameters
spaceId path*
Body
application/json
connectionType string* connected hosted
branch string* Name for the new branch.
baseRef string Branch, tag, or commit the new branch starts from. Omit to start from the repository's default branch.
Send
Request
cURL
curl -X POST "https://api.spacefast.com/v1/spaces/string/source/branches" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"connectionType": "connected",
"branch": "string",
"baseRef": "string"
}'
JavaScript
const response = await fetch("https://api.spacefast.com/v1/spaces/string/source/branches", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: "{\n \"connectionType\": \"connected\",\n \"branch\": \"string\",\n \"baseRef\": \"string\"\n}"
});
Python
import requests
response = requests.post(
"https://api.spacefast.com/v1/spaces/string/source/branches",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
data="{\n \"connectionType\": \"connected\",\n \"branch\": \"string\",\n \"baseRef\": \"string\"\n}",
)
Response
{
"$schema": "http://example.com",
"data": {
"branch": {
"name": "string",
"commitSha": "string",
"message": "string"
},
"repositoryConnection": {
"id": "string",
"spaceId": "string",
"provider": "github",
"connectionType": "connected",
"repositoryId": "string",
"installationId": null,
"cloneUrlConfigured": false,
"upstreamUrlConfigured": false,
"repositoryName": "string",
"repositoryFullName": "string",
"defaultBranch": "string",
"productionBranch": "string",
"credentialConfigured": true,
"autoDeployProduction": true,
"autoDeployPreviews": true,
"buildSettings": {
"rootDirectory": null,
"installDirectory": null,
"installCommand": null,
"buildCommand": null,
"outputDirectory": null,
"ignoredBuildCommand": null,
"frameworkPreset": null,
"platformPreset": null,
"allowUnsupportedPlatformFeatures": false,
"timeoutSeconds": 900
},
"syncStatus": "idle",
"providerAccessStatus": "active",
"providerAccessError": null,
"lastSyncedAt": "2019-08-24T14:15:22Z",
"lastSyncError": "string",
"syncRunId": "string",
"connectedUserId": "string",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
},
"repositoryId": "string"
}
}
{
"$schema": "http://example.com",
"type": "string",
"title": "string",
"status": -9007199254740991,
"detail": "string",
"code": "string",
"pointer": "string",
"details": {
"property1": null,
"property2": null
},
"suggestions": [
"string"
],
"next": [
"string"
],
"requestId": "string"
}