Create an artifact - Spacefast Docs
Create an artifact
Commits artifacts/<slug>.tsx into the space’s source. With no space named, the team’s Artifacts space is created lazily — a source container with no site until something publishes.
POST/v1/artifacts
Authorization
AuthorizationBearer token · headerrequired
Authorization: Bearer <key> with the Space key (sfc_ prefix) of an unclaimed Space. The same key is the fragment of the claim URL and the token in the Space's /__/ <key> sign-in URL.
or
AuthorizationBearer token · headerrequired
Authorization: Bearer <token> with an API key (sfa_ prefix), an OAuth access token, a session token, or a Space machine credential (sfm_ prefix).
or
AuthorizationOAuth2 access token · headerrequired
OAuth 2.0 with Spacefast scopes. People use the authorization code flow; machines use client credentials.
Scopes:connectors:execute
Query parameters
teamstring
min length 1
Request body
requiredapplication/json
spacestring
Space to hold the file. Omit to use (or lazily create) the team's Artifacts space.
min length 1
slugstringrequired
File name: the artifact lands at artifacts/<slug>.tsx.
min length 1 · max length 128 · matches ^[a-z0-9][a-z0-9-]*$
titlestringrequired
min length 1 · max length 255
descriptionstring | any
Show propertiesHide properties
Any of:
- string
string- any
anybindingsobject
Role name to connection id. Roles keep account identity out of the source.
sourcestringrequired
The component body: one component named App, zero imports, export default App.
min length 1 · max length 200000
Responses
201Response for status 201
$schemastring
Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.
dataobjectrequired
One artifact, with its source at a commit.
Show propertiesHide properties
refstringrequired
Artifact address: <spaceId>:<path>. The only way to name an artifact.
min length 3 · max length 1024 · matches ^[^:]+:[^:]*$
spaceIdstringrequired
Space holding the source file. Read-only projection of ref.
pathstringrequired
Path within the space's source, e.g. artifacts/burndown.tsx. Read-only projection of ref.
slugstringrequired
Short name derived from the file name. Unique within its space.
titlestringrequired
Title declared in the file's front-matter.
descriptionstring | anyrequired
Description declared in the file's front-matter.
Show propertiesHide properties
Any of:
string
stringany
anyownerstringrequired
personal when the file lives under artifacts/personal/<user>/. A visibility convention, not a storage boundary.
Allowed:team``personal
bindingsobjectrequired
Role name to connection id. Code writes roles, never accounts — sharing an artifact is a rebind, not a rewrite.
commitShastringrequired
Commit the projection was read at. Everything here is true as of this commit.
previewUrlstring | anyrequired
Rendered snapshot for this commit; null until one has been captured.
Show propertiesHide properties
Any of:
string
stringany
anyupdatedAtstringrequired
When the commit landed.
matches ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:.\d+)?)?(?:Z))$
sourcestringrequired
The file: one component named App, zero imports, everything else pre-bound in scope.
parsedScopeNamesstring[]required
Provided-scope names the source actually references. An unknown name here is why a render fails.
defaultProblem details (RFC 9457). Any 4xx/5xx response is one application/problem+json document.
$schemastring
Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.
typestringrequired
URL of the documentation page for this error. Derived from code.
titlestringrequired
Human-readable name of the error type. Derived from code.
statusintegerrequired
HTTP status of the response, repeated in the body.
min -9007199254740991 · max 9007199254740991
detailstringrequired
What went wrong in this request.
codestringrequired
Stable snake_case error code. Match on this, not on detail.
pointerstring
RFC 6901 JSON Pointer to the request field or batch entry that failed, for example /files/37/path. Present on validation failures.
detailsobject
Machine-readable context keyed by the error code.
suggestionsstring[]
Recovery steps safe to show to a person.
nextstring[]
Commands or API requests to run next, usable as written.
requestIdstringrequired
ID of this request, from the X-Request-Id header or generated. Quote it when contacting support.
Try it
Server
Base URLhttps://api.spacefast.com
Custom base URLOverrides the selected server when set.
Authorization
Bearer tokenRemember on this deviceInclude my values in samples
Parameters
teamquery- Bodyapplication/json
Request body
Send
Request
curl -X POST "https://api.spacefast.com/v1/artifacts" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{\n "space": "string",\n "slug": "string",\n "title": "string",\n "description": "string",\n "bindings": {\n "property1": "string",\n "property2": "string"\n },\n "source": "string"\n}'
Example Requests
const response = await fetch("https://api.spacefast.com/v1/artifacts", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: "{\n \"space\": \"string\",\n \"slug\": \"string\",\n \"title\": \"string\",\n \"description\": \"string\",\n \"bindings\": {\n \"property1\": \"string\",\n \"property2\": \"string\"\n },\n \"source\": \"string\"\n}"
});
import requests
response = requests.post(
"https://api.spacefast.com/v1/artifacts",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
data="{\n \"space\": \"string\",\n \"slug\": \"string\",\n \"title\": \"string\",\n \"description\": \"string\",\n \"bindings\": {\n \"property1\": \"string\",\n \"property2\": \"string\"\n },\n \"source\": \"string\"\n}",
)
Response
201default
{
"$schema": "http://example.com",
"data": {
"ref": "string",
"spaceId": "string",
"path": "string",
"slug": "string",
"title": "string",
"description": "string",
"owner": "team",
"bindings": {
"property1": "string",
"property2": "string"
},
"commitSha": "string",
"previewUrl": "string",
"updatedAt": "2019-08-24T14:15:22Z",
"source": "string",
"parsedScopeNames": [
"string"
]
}
}
Error Response
{
"$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"
}