Connector API

The endpoints the GrowingUpVideo connector uses to create a video job, upload photos, and sort them by age. Written for agent platforms and for anyone scripting against their own account. Install guide · Get a key

MCP server (no key needed)

A remote MCP server at https://growingupvideo.com/mcp (streamable HTTP, stateless, JSON responses). It needs no key and no sign-in. It creates no job and never charges anyone: it explains the product, gives photo tips, and returns the link where the person makes their video. They add photos, check the crops and the age order, and pay on the website. Meta Muse connects to https://growingupvideo.com/mcp/muse, which is the same server with a link straight into the upload page.

curl -X POST https://growingupvideo.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
  • get_offer: what GrowingUpVideo makes, how it works, prices, and privacy.
  • photo_tips: how to choose photos (count, ages, framing, quality).
  • start_video: the link where the person makes their video.
  • All three take no input, are read-only, and return text.

What this API is for

It covers the part of making a video that a script can do: creating a job, uploading photos, and putting them in age order. It deliberately stops before anything that charges the person.

Starting a render, paying, redoing a clip, and editing a finished video all require a signed-in session on the website. A key cannot reach them. That is the point: the person always approves the spend themselves, in their own browser.

Authentication

Create a key at https://growingupvideo.com/connect-muse while signed in, then send it as a bearer token.

The key is shown once and stored only as a SHA-256 hash, so it cannot be recovered later. Five keys per account; revoke any of them on the same page. A revoked key stops working within a minute.

curl -X POST https://growingupvideo.com/api/jobs \
  -H "Authorization: Bearer guv_..." \
  -H "Content-Type: application/json" \
  -d '{"subject_type": "person", "aspect_ratio": "9:16"}'

The flow

  • Create a job with the subject type and aspect ratio. Returns a job_id.
  • Request upload URLs for the number of photos, then PUT each photo to the URL you get back. Send Content-Type: image/jpeg; it is part of the signature. Links expire in an hour. Requesting links replaces the job's photo list, so if an upload fails partway, request a fresh set and send them all again rather than retrying one.
  • Sort only if the account already holds a credit. The age-sort does not consume one, but it answers 402 until there is one, and having none is the normal case before a first purchase. Check /api/credits first, and skip this step when it reads zero: the website runs the sort itself after payment. When it does run, poll the job until sort_status is SORTED. A FAILED sort is survivable: the person can reorder by hand on the website.
  • Hand off the person to /jobs/{job_id}/order, where they pick a package, pay, and press Generate.

Limits and errors

  • 401 the key is unknown or revoked. Get a new one.
  • 403 the endpoint is not available with a key, or the job belongs to someone else.
  • 402 the account holds no credit, so the age-sort is not available yet. It would not consume one; it is simply gated. Skip it and hand off to the order page.
  • 409 a sort is already running for that job.
  • 429 the account's daily photo-upload allowance is spent. It resets at 00:00 UTC, and is set well above normal use.
  • 2 to 24 photos per job. The upload link is signed for image/jpeg, so send JPEG bytes: convert PNG, HEIC and WebP first.
  • You crop the photos yourself. The API does not crop. Crop each one to the job's aspect ratio before uploading, and when you have to cut height, bias the box upward rather than centring it so heads survive, and keep every photo at least 600 px on its shorter side afterwards. A ratio that does not match the photos is the most common cause of a poor result: a 1200x1600 portrait cropped to 16:9 loses 58% of its height, turning a full-body shot into a head crop. A job created through the API has no crop-review screen on the website, so check the framing before you send the photos, not after.

Cost and privacy

  • Each video is a one-time purchase, paid by the person on the website. There is no subscription and no charge for using this API.
  • Uploaded photos and finished videos are deleted 30 days after they are created.
  • Face comparison runs on couple videos only, to keep both people correctly positioned across a transition. No facial template is stored and it is not used to identify anyone.
  • Video generation runs on a third-party model provider. See the privacy policy for details.

Endpoints

MethodPathDoes
POST/api/jobsCreate a job. Returns job_id.
GET/api/jobs/{job_id}Status, sort_status, and the ordered photos.
POST/api/jobs/{job_id}/upload-urlsPresigned PUT links for {count} photos.
GET/api/jobs/{job_id}/image-urlsLinks to read the photos back.
POST/api/jobs/{job_id}/auto-sortSort the photos by age. Runs in the background.
GET/api/creditsThe account's credit balance.

Muse is a product of Meta Platforms, Inc. GrowingUpVideo is not affiliated with Meta. Privacy · Terms