# Store an artifact preview

Caches a rendered snapshot against the commit sha. Generated state never lands in git.

PUT `/v1/artifacts/{ref}/preview`

## Authorization

`Authorization` Bearer token · header required

`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

`Authorization` Bearer token · header required

`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:** `connectors:execute`

## Path parameters

`ref` string required

## Query parameters

`team` string min length 1

## Request body required `application/json`

`image` string required

The snapshot as a data URL, straight from the viewer's canvas.

max length 8000000 · matches ^data:image\/.*

`commitSha` string required

Commit this snapshot renders. A snapshot of a stale commit is rejected.

min length 1

## Responses

### 200 Response for status 200

`$schema` string <uri>

Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.

`data` object required

A raster snapshot of an artifact. Cached against the commit, never committed to git.

#### Properties

`ref` string required

Artifact address: `<spaceId>:<path>`. The only way to name an artifact.

min length 3 · max length 1024 · matches ^[^:]+:[^:].*$

`commitSha` string required

Commit this snapshot renders.

`previewUrl` string required

Where to fetch the snapshot.

`updatedAt` string <date-time> required

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))$

**default** Problem details (RFC 9457). Any 4xx/5xx response is one `application/problem+json` document.

`$schema` string <uri>

Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.

#### Error Object

`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

`ref` path * `team` query

### Body application/json

`image` string * The snapshot as a data URL, straight from the viewer's canvas.
`commitSha` string * Commit this snapshot renders. A snapshot of a stale commit is rejected.

### Send

## Request Examples

### cURL

```bash
curl -X PUT "https://api.spacefast.com/v1/artifacts/string/preview" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "image": "string",
  "commitSha": "string"
}'
```

### JavaScript

```javascript
const response = await fetch("https://api.spacefast.com/v1/artifacts/string/preview", {
  method: "PUT",
  headers: {
    "Authorization": "Bearer YOUR_TOKEN",
    "Content-Type": "application/json"
  },
  body: "{\n  \"image\": \"string\",\n  \"commitSha\": \"string\"\n}"
});
```

### Python

```python
import requests

response = requests.put(
    "https://api.spacefast.com/v1/artifacts/string/preview",
    headers={
        "Authorization": "Bearer YOUR_TOKEN",
        "Content-Type": "application/json"
    },
    data="{\n  \"image\": \"string\",\n  \"commitSha\": \"string\"\n}",
)
```

### Response

#### 200 default

```json
{
  "$schema": "http://example.com",
  "data": {
    "ref": "string",
    "commitSha": "string",
    "previewUrl": "string",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
}
```

#### Error Response

```json
{
  "$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"
}
```
