Skip to the main content

Generations

A generation is a video idea: hook, caption, hashtags, hook score and, for template formats, the deck that renders it.

Fields

  • caption: the on-screen hook.
  • postCaption and hashtags: the platform caption.
  • why and angle: the rationale and the brand angle it came from.
  • score: hook score, 0 to 100. A model estimate, not a view forecast.
  • status: pending, accepted, scheduled or discarded.
  • deck: for template formats, returned by GET /generations/{id}.

Generate

POST /generations is synchronous and free. count is 1 to 10. prompt steers the batch. format pins one format; leave it out and the mix comes from your brand. influencerId writes for one AI avatar. Limit: 10 requests per 300 seconds per key.

Request

curl -X POST "https://looptake.com/api/v1/generations" \
  -H "Authorization: Bearer $LOOPTAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "count": 5,
    "format": "slideshow",
    "prompt": "the September restock, for owners of one or two shops"
  }'

Response 201

{
  "success": true,
  "data": [
    {
      "id": "6522d1ec-2c11-4d3a-b078-6f6cfe9f217b",
      "format": "slideshow",
      "caption": "One stockout costs more than a year of forecasting",
      "postCaption": "The maths nobody runs before they run out.",
      "hashtags": ["#retail", "#inventory"],
      "why": "Answers the price objection with the cost of the alternative.",
      "angle": "The cost of one stockout",
      "score": 78,
      "status": "pending"
    }
  ]
}

GET /generations lists the pending queue. Ideas that belong to an automation are listed under that automation.

Formats

18 formats. 3 template formats (walloftext, slideshow, greenscreen) render from a deck and cost no credits. The other 15 generate AI media and cost 10 credits per render, refunded if the render fails.

Deck

A deck is deterministic JSON for one video. Geometry is normalised to the frame. Edit it and send it to POST /posts with a format; that post returns 202 because it renders first.

Deck (shortened)

{
  "version": 1,
  "ratio": "9:16",
  "durationMs": 8000,
  "fps": 30,
  "background": { "kind": "clip", "src": "a7273471-d932-4f9a-958e-79abdd1f3fd7" },
  "slides": [
    {
      "startMs": 0,
      "endMs": 8000,
      "boxes": [
        {
          "id": "hook",
          "text": "One stockout costs more than a year of forecasting",
          "rect": { "x": 0.08, "y": 0.18, "w": 0.84, "h": 0.34 }
        }
      ]
    }
  ],
  "captions": { "enabled": true, "style": "karaoke" }
}

Accept

Accepting turns an idea into a content piece and returns a contentId. This counts against the plan quota. Accepting twice returns the same piece. You can skip this step: pass suggestionId to POST /posts.

Request

curl -X POST "https://looptake.com/api/v1/generations/6522d1ec-2c11-4d3a-b078-6f6cfe9f217b/accept" \
  -H "Authorization: Bearer $LOOPTAKE_API_KEY"

Variants

Rewrites only the hook, for A/B tests. Each variant is a new idea with its own id and score.

Request

curl -X POST "https://looptake.com/api/v1/generations/6522d1ec-2c11-4d3a-b078-6f6cfe9f217b/variants" \
  -H "Authorization: Bearer $LOOPTAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"count": 3}'

Describe it. Looptake writes, renders, scores and posts it to TikTok, Reels and Shorts.

Free trial, no card. Paid plans from $29/month.