# Create a source tag

Create a release tag in a ready source connection.

## Request

### POST `/v1/spaces/{spaceId}/source/tags`

### Authorization

`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: `spaces:write`

## Path parameters

`spaceId` string required

## Request body

required `application/json`

- `connectionType` string required  
  Allowed: `connected`, `hosted`
- `name` string required  
  Tag name to create.  
  min length 1
- `target` string required  
  Branch, tag, or commit the tag points at.  
  min length 1

## Responses

201 Response for status 201

- `$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
  - `repositoryConnection` object required
    - `id` string required  
      Source connection ID (`rpc_` prefix).
    - `spaceId` string required
    - `provider` string required  
      Git host the repository lives on.  
      Allowed: `github`, `gitlab`, `bitbucket`, `generic`
    - `connectionType` string required  
      `connected` for a repository linked from a Git host, `hosted` for the mirror Spacefast hosts and the caller pushes to.
      Allowed: `connected`, `hosted`
    - `repositoryId` string | any required
      Identifier of the mirror that content reads and builds run against. Null when no mirror is bound yet.
    - `installationId` string | any required  
      GitHub App installation the connection reads through. Null for a hosted mirror.
      default: null
    - `cloneUrlConfigured` boolean required  
      Whether a clone URL is stored. The URL itself is not returned.
      default: false
    - `upstreamUrlConfigured` boolean required  
      Whether an upstream URL to pull from is stored. The URL itself is not returned.
      default: false
    - `repositoryName` string required  
      Repository name without its owner.
    - `repositoryFullName` string required  
      Repository name as `owner/name`.
    - `defaultBranch` string required  
      Branch the Git host treats as the repository default.
    - `productionBranch` string required  
      Branch whose pushes produce production builds, and the ref content reads fall back to when none is given.
    - `credentialConfigured` boolean required  
      Whether a Git credential is stored. The credential itself is never returned.
    - `autoDeployProduction` boolean required  
      Whether a push to the production branch queues a build.
    - `autoDeployPreviews` boolean required  
      Whether a push to any other branch or a pull request queues a preview build.
    - `buildSettings` object required
      - `rootDirectory` string | any required
        Directory the build runs in, relative to the source root. Null builds at the root.
        default: null
      - `installDirectory` string | any required
        Directory dependencies install into, relative to the source root. Null installs in the build directory.
        default: null
      - `installCommand` string | any required
        Command that installs dependencies. Null lets the build runner pick one.
        default: null
      - `buildCommand` string | any required
        Command that produces the output. Null lets the build runner pick one.
        default: null
      - `outputDirectory` string | any required
        Directory the built output is collected from, relative to the build directory. Null lets the build runner detect it.
        default: null
      - `ignoredBuildCommand` string | 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
      - `frameworkPreset` string | any required  
        Framework the source builds with, for example `next` or `vite`. Null lets the build runner detect it.
        default: null
      - `platformPreset` string | any required  
        Platform build convention the source follows, for example `vercel` or `netlify`. Null lets the build runner detect it.
        default: null
      - `allowUnsupportedPlatformFeatures` boolean required
        Runs the build even when the source declares platform features Spacefast does not support. Defaults to `false`, which refuses those sources.
        default: false
      - `timeoutSeconds` integer required  
        Wall-clock budget for the run, in seconds. Between 60 and 7200; defaults to 900.
        min 60 · max 7200 · default: 900
      - `syncStatus` string 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`
      - `providerAccessStatus` string 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`
      - `providerAccessError` string | any required  
        What the Git host reported when access stopped working. Null while access holds.
        default: null
      - `lastSyncedAt` string <date-time> | any required
        ISO 8601 timestamp of the last sync that finished. Null before the first one.
      - `lastSyncError` string | any required  
        Why the last sync failed. Null after a sync that succeeded.
      - `syncRunId` string | any required  
        Identifier of the sync in flight. Null when no sync is running.
      - `connectedUserId` string | any required  
        User who last authorized or changed the connection. Null when no user did.
      - `createdAt` string <date-time> required
        ISO 8601 timestamp when the connection was created.
      - `updatedAt` string <date-time> required
        ISO 8601 timestamp of the last change.
  - `repositoryId` string required
  - `tag` object required
    - `name` string required
    - `sha` string required
    - `message` string required

## Error Response

default Error. Every 4xx and 5xx response is one RFC 9457 problem document served as `application/problem+json`.
