Export status and downloads

Every export you trigger ends up in the Exports tab — a list of jobs with their statuses, ready-to-download links, and timestamps.

In this guide:

  • Open the Exports tab
  • The four statuses
  • Download a ready file
  • What “expired” means
  • What “failed” means (and how the credit refund works)

Open the Exports tab

Sidebar → Exports.

Newest first. Each row:

ColumnWhat
FormatPDF or CSV.
SearchThe originating search’s keyword + marketplace.
CreatedWhen the export was enqueued.
StatusOne of generating, ready, failed, expired.
Ready atTimestamp the file became downloadable.
Expires atWhen the download link will go dead.
SizeHuman-readable file size.
ActionDownload / regenerate / delete.

The four statuses

generating

The export worker is building the file. Most jobs finish in 5–30 seconds. Long jobs (large expanded searches, hundreds of products) can take up to a minute or two.

While generating, the row shows a small spinner. Pull-to-refresh or wait — the row updates automatically when status changes (without a page refresh).

ready

The file is built. The Download button is live and the Expires at timestamp is 1 hour from now.

Click Download → the file downloads. (You can download multiple times within the 1-hour window.)

expired

More than 1 hour after the file became ready. The download link is dead and the file has been deleted from storage.

The row stays in the Exports tab as a record of the action; you can’t recover the file. To get a fresh copy, click Regenerate — that creates a new export job (1 credit).

failed

Something went wrong during generation. The row shows a brief error reason (“data unavailable”, “internal error”, etc.). The credit is automatically refunded.

You can:

  • Retry — re-runs the export (charges 1 credit; this time hopefully succeeds).
  • Delete — removes the row from the list. (Doesn’t undo anything; just cleans up.)
  • Open ticket — if the failure is persistent, the row’s menu has a “report” link that bundles the export details for support.

Downloading a ready file

Just click the Download button. The file is served directly (no JSON envelope, no API token in the URL — just the raw bytes with a sensible filename).

Filenames follow this pattern:

hilal-product-research_<keyword>_<marketplace>_<YYYY-MM-DD>.pdf
hilal-product-research_<keyword>_<marketplace>_<YYYY-MM-DD>.csv

Spaces in the keyword are replaced with hyphens. Special characters are stripped.

When an export fails: the refund mechanic

When generation fails:

  1. The export job’s status flips to failed.
  2. Hilal’s credit service detects the failure and posts a refund.
  3. The credit appears in your Credit ledger with the original export’s UUID and reason export_failed.
  4. The whole flow happens automatically; you don’t have to ask.

Time-to-refund: usually within 30 seconds of failure detection.

If the refund doesn’t appear within 5 minutes, check the Credit ledger. If it’s still missing, file a ticket with the export UUID.

Common failure causes

Reason in the rowWhat it meansWhat to do
“Data unavailable”The underlying search data was stale or partially deleted.Re-fetch or re-run the search, then export.
“Internal error”Something in the worker glitched.Retry. If persistent, file a ticket.
“Storage failure”Hilal’s storage backend was briefly unavailable.Retry; should succeed.
“Search not found”The export was on a search that’s been deleted.Can’t recover; the search is gone.

Bulk operations

The Exports tab supports a small number of bulk operations:

  • Delete expired — clears all expired rows from the list.
  • Delete failed — clears all failed rows (after you’ve reviewed them).

Bulk operations only affect the list; the underlying credits are untouched (refunds already happened for failures, expirations don’t refund).

Related articles