Browse docs
Sprid docs

Build locally and send to Sprid

Build media locally and continue with the same assets and posts in Sprid.

What this guide does: Build content with your own tools, upload the finished files to Sprid, and keep editing, reviewing and measuring the same posts in chat or the dashboard.

sprid post does both halves. Locally it builds, checks and pushes the media in your repo (init, new, build, register, check, push, draft, preview, status); on the server it works on shared posts (create, get, update, preview --id, deliveries, schedule, publish). sprid media handles media on the server (upload, import, the hosted reel and job); its other subcommands are the same local commands as sprid post. Run sprid post help for every local command. If sign-in fails, the local result stays usable. Keep the same post and plan IDs when you move work into Sprid.

Build

Use your app’s own renderer or design tools, or a built-in recipe:

sprid post init --kind stills   # or text (your text renderer) or own (you render the MP4s)
sprid post new <slug>
sprid post build <slug>
sprid post check <slug>

init writes sprid.config.ts. A lane’s build is your own command, or a built-in recipe: stills for photographs and screenshots, screen for an app recorded in the simulator from a gesture script. A TS/JS config runs local code, so only use one you trust. Native captures and binary builds need your app’s own environment. A local slug stays local; a shared preview is always sprid post preview --id <postId>.

Upload

sprid login
sprid media upload slide-01.png slide-02.png --account my-account --json

Files go straight to storage and come back as ordered asset IDs. PNG, JPEG, WebP and MP4, up to 32 MiB each; larger videos go through sprid post push. The command prints a request ID first. To resume, rerun with the same files in the same order and --request-id <UUID>, or read the saved result with sprid media job <UUID>. Don’t reuse a request ID for a different selection.

Create and review the post

Sprid record IDs are UUIDs. Posts also have readable references such as SPR-9; either identifies the same post.

Write draft.json with the returned IDs and a new UUID as requestId (keep it for retries):

{
  "account": "my-account",
  "requestId": "5e253644-d8a5-4b18-9cc9-d4d921874138",
  "title": "A concrete moment",
  "captionInstagram": "The caption, with hashtags at the end",
  "aspectRatio": "4:5",
  "presentation": "finished",
  "assets": [{ "kind": "image", "id": "28dc0981-a925-44b0-8ec5-70279f8fef41" }, { "kind": "image", "id": "b7a4e0bc-92de-451d-9b3e-d384a2ddcc83" }]
}

For a finished reel, use one asset with kind: "video". finished artwork gets no overlay or music; images fit inside the canvas, so check the preview for margins.

sprid post create --file draft.json --json
sprid post get SPR-9 --json
sprid post update SPR-9 --file changes.json --json   # e.g. {"captionInstagram":"Revised caption"}
sprid post preview --id SPR-9 --json
sprid post deliveries SPR-9 --json

The review link opens the same dashboard screen as from chat. To continue in chat, give it post reference SPR-9 instead of creating another draft. Approval and platform choices stay with a person. Check delivery receipts before reporting success.

Hosted options and results

  • sprid capabilities --json: server limits and what stays local.
  • sprid media import --file sources.json: the same account/files/urls/assets payload as MCP import_assets.
  • sprid media reel --file recipe.json: the metered hosted reel. Payload and approval rules are in sprid docs chat. Poll with sprid media job <UUID>.
  • sprid marketing-review: connected evidence. sprid docs marketing-review covers coverage and attribution.

Keys go in through CLI key-file commands or the secure Sprid forms, never a conversation.

Need a hand?
Colour theme
Back to Sprid ↗