# Get an artifact

The artifact’s source and parsed front-matter at its current commit.

GET `/v1/artifacts/{ref}`

## 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:read`

## Path parameters

`ref` string required

## Query parameters

`team` string

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

One artifact, with its source at a commit.

#### Show properties

- `ref` string required
  - Artifact address: `<spaceId>:<path>`. The only way to name an artifact.
  - min length 3 · max length 1024 · matches ^[^:]+:[^:].*$
- `spaceId` string required
  - Space holding the source file. Read-only projection of `ref`.
- `path` string required
  - Path within the space's source, e.g. `artifacts/burndown.tsx`. Read-only projection of `ref`.
- `slug` string required
  - Short name derived from the file name. Unique within its space.
- `title` string required
  - Title declared in the file's front-matter.
- `description` string | any required
  - Description declared in the file's front-matter.

#### Any of:

- string
- `string`
- any
- `any`

- `owner` string required
  - `personal` when the file lives under `artifacts/personal/<user>/`. A visibility convention, not a storage boundary.
  - Allowed: `team`, `personal` 
- `bindings` object required
  - Role name to connection id. Code writes roles, never accounts — sharing an artifact is a rebind, not a rewrite.
- `commitSha` string required
  - Commit the projection was read at. Everything here is true as of this commit.
- `previewUrl` string | any required
  - Rendered snapshot for this commit; null until one has been captured.

#### Show properties

- `updatedAt` string <date-time> required
  - 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))$
- `source` string required
  - The file: one component named `App`, zero imports, everything else pre-bound in scope.
- `parsedScopeNames` string[] required
  - Provided-scope names the source actually references. An unknown name here is why a render fails.

## 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.

### `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

### Send

## Request

### cURL

```bash
curl -X GET "https://api.spacefast.com/v1/artifacts/string" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

### JavaScript

```javascript
const response = await fetch("https://api.spacefast.com/v1/artifacts/string", {
  method: "GET",
  headers: {
    "Authorization": "Bearer YOUR_TOKEN"
  }
});
```

### Python

```python
import requests

response = requests.get(
    "https://api.spacefast.com/v1/artifacts/string",
    headers={
        "Authorization": "Bearer YOUR_TOKEN"
    },
)
```

## Response

### 200 default

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

```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"
}
```
