Skip to content

Bulk import and export of short links

When you have tens or thousands of URLs to shorten, upload them in one CSV file instead of creating each link by hand. Every row becomes a normal short link that you can edit, share and track like any other.

  1. Open URL Shortener in the dashboard and choose Bulk import.

  2. Download the CSV template, fill one row per link and save it as CSV.

  3. Upload the file and pick the defaults that apply to rows that leave a column empty, such as the template or the tag.

  4. Check the file. Posty5 reads every row without creating anything and lists the rows that would fail.

  5. Start the import. You can leave the page, and a notification tells you when it has finished.

Only the url column is required. Column names are not case-sensitive, and a column Posty5 does not know is ignored and reported in the check step.

Column
urlThe destination address. Required. baseUrl is accepted as another name for it.
nameA name for your own list. Left empty, Posty5 fills it from the page title in the background.
customIdYour own ending for the short link, when your plan allows custom IDs. It must be unused, including by an earlier row of the same file.
tagA tag to group and filter the links later.
refIdYour own reference, for example a product code from your system.
templateIdThe QR code template of this row. It overrides the default you picked.
url,name,customId,tag,refId,templateId
https://example.com/spring-sale,Spring sale,,spring,,

Save the file as UTF-8 CSV with commas and a header row. Values that contain commas go in double quotes, as spreadsheet apps do on their own.

The check runs the same rules as creating a link by hand and shows each failing row with its row number, counting from the first row under the header. A row fails when

  • the URL is missing, is not a valid web address, or is longer than 2,048 characters
  • the URL is blocked as unsafe
  • a name, tag or reference is longer than 255 characters
  • the custom ID is not allowed on your plan, is invalid, or is already in use
  • the template does not exist or is not yours
  • One file holds up to 5,000 rows and 2 MB.
  • You can create up to 20,000 rows in bulk per day (UTC), counting every import and API call together.
  • One import runs at a time, and up to three more can wait for it.
  • If your credits run out during an import, that row and every row after it fail with Not enough credits, and the links already created stay.

The import page shows how many rows were processed, created and failed, and refreshes on its own. You can cancel a running import; the links created before the cancel stay.

Page titles and app deep links are fetched in the background after each link is created, so a link may show its host as its name for a short while.

When the import finishes, download its results file. It has one line per row of your file.

Column
rowThe row number in your file, counting from the first row under the header.
statuscreated, failed, skipped, or notProcessed when the import stopped before reaching the row.
id, shortUrlThe new link’s ID and short address.
errorsWhy the row failed.

A second file holds only the failed rows with your original values, so you can fix them and upload that file again.

Bulk jobs lists your recent imports with their status and counts. Open one to see its progress or download its files again.

Developers can send up to 100 rows in one request and get one result per row back at once, or submit a file of up to 5,000 rows as a job and poll it. The same limits and checks apply, and the request honours an Idempotency-Key header so a retried request does not create links twice. The routes are documented in the API reference (Swagger).

  • POST /api/short-link/bulk
  • POST /api/link-bulk-jobs
  • GET /api/short-link/export

From the short-link list, choose Export CSV or Export JSON to download your links with their visit counters.

  • The export uses the filters that are applied to the list, so filter first to export only part of it.
  • One export holds up to 50,000 rows, newest first. A longer list is cut there, and the file says so in its last line (CSV) or its truncated field (JSON).
  • A cell that starts with = + - or @ gets a leading apostrophe in the CSV, so that a spreadsheet app shows it as text instead of running it as a formula.