The Scenario
You are coordinating production for a composite video project. The director handed you an Excel workbook with 25 raw footage URLs — column A — pulled from various storage buckets. Before anyone can build the timeline, those files need to be ingested into Shotstack as source assets. That is a prerequisite, not optional, and you are the one who was volunteered to get it done.
The bad version:
- Open the Shotstack API docs, copy the ingest endpoint, write a curl command for the first URL, fire it, copy the returned ingest ID into column B.
- Do that 24 more times, managing the terminal window and the workbook simultaneously.
- Wait, then go back through column B one row at a time, check each ingest ID for status, and write "ready" or the error message into column C.
You are a production coordinator, not a backend developer. Running 25 curl commands against an API while copying IDs between a terminal and a workbook is not a task that scales, and you have a timeline review scheduled this afternoon.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Excel workbook. It reads column A, talks to Shotstack's ingest endpoint for each URL, and writes the ingest IDs back into column B — no terminal, no copy-pasting, no API docs.
For each ingest ID in column B, check the Shotstack source status and write the result (ready or error reason) into column C
Wait — first use this prompt to submit the ingest jobs:
Fetch each remote media URL in column A into Shotstack as a source asset and write the returned ingest ID into column B
SheetXAI iterates every URL in column A, sends each one to Shotstack's ingest endpoint, and writes the ingest ID into column B as each call returns.
What You Get
- Column B fills with Shotstack ingest IDs for every successfully submitted URL.
- Any URL that Shotstack rejects — malformed, unreachable, wrong format — gets a note in column B explaining the rejection, not a blank.
- You can follow up with a second prompt to check each ingest ID in column B for status and write "ready" or the error reason into column C.
What If the Data Is Not Quite Ready
Some URLs are from a private bucket and need a signed token appended
Column A has plain CDN URLs, but 8 of them point to restricted storage that requires a query-string token stored in column C.
For rows where column C has a value, append it as a query parameter to the URL in column A before submitting to Shotstack ingest — for rows where column C is blank, use the URL as-is — write ingest IDs into column B
The URL list has duplicates
Someone merged two handoff sheets and there are 6 duplicate URLs in column A.
Deduplicate column A before submitting ingest jobs to Shotstack — flag duplicates with "duplicate" in column C, then ingest all unique URLs and write ingest IDs into column B
Some entries are file paths, not full URLs
A portion of column A has relative file paths instead of full HTTPS URLs.
Skip any row in column A that does not start with "http" — flag those rows with "invalid URL" in column C — then submit Shotstack ingest jobs for the remaining rows and write ingest IDs into column B
Validate URLs, deduplicate, ingest, and check initial status in one sweep
Validate column A: skip rows that are not full HTTPS URLs and mark them "invalid" in column D, skip duplicate rows and mark them "duplicate", then ingest all remaining URLs into Shotstack and write ingest IDs into column B — once submitted, check each ingest ID and write its current status into column C
The logic: ingestion prep and submission do not need to be separate steps when you can describe the entire sequence in one ask.
Try It
Open your footage URL workbook and Get the 7-day free trial of SheetXAI and ask it to ingest every URL in column A into Shotstack. When the IDs land in column B, ask it to check status and write "ready" into column C. See also: Audit your source asset library and the Shotstack overview.
