Appearance
Pagination
List endpoints take limit and cursor, and return nextCursor.
bash
curl "https://clips.vocaflare.com/v1/words?q=rec&limit=20" \
-H "Authorization: Bearer $VOCAFLARE_API_KEY"json
{ "words": [], "totalCount": 2758, "nextCursor": "eyJvIjoyMH0" }Pass that value back to get the next page:
bash
curl "https://clips.vocaflare.com/v1/words?q=rec&limit=20&cursor=eyJvIjoyMH0" \
-H "Authorization: Bearer $VOCAFLARE_API_KEY"nextCursor is null on the last page. That is the end condition; do not compare counts.
The cursor is opaque
It encodes position and the filters it was produced under. Decoding it, building one by hand, or reusing one across different filters are all unsupported: the encoding may change, and a mismatched cursor answers 400 with invalid_request.
Cursors do not expire, but they point into an index that grows. A cursor taken today and used next week still returns coherent results, just not a snapshot of last week.
Feed pagination needs a seed
GET /feed shuffles on every request. Without a seed, page two would be a fresh shuffle of the same corpus and would repeat clips from page one.
Send a seed on the first call, or read the one the response echoes back, and keep sending it along with the cursor. Same seed plus cursor continues one sequence.
bash
curl "https://clips.vocaflare.com/v1/feed?level=B1&seed=6f1c2d&cursor=eyJzIjoiNmYxYzJkIiwibyI6MTB9" \
-H "Authorization: Bearer $VOCAFLARE_API_KEY"A stable per-user string works well as a seed: two sessions of the same user then walk the same order, and two different users do not see the same opening clips.