Product Updates··7 min read

Four Ways to Add Images to a Job

Your library, your computer, a public URL, or Google Drive. Four routes into the same asset library, in the app and over the API.

By On-Model Team

Four glowing blue input lines converging into a single channel that opens into a grid of bright white product photo cards on a dark background

Nobody picks an image platform for its upload dialog. But if you have ever waited for 300 flat-lays to sync out of a shared drive so you could drag them into a browser, you know that getting images in is where the day actually goes.

Two new import routes are live: from a URL and from Google Drive. Together with the two that were already there, that makes four ways to put images in front of a job, and all four land in the same place.

The four routes

Open any job and click Add your images. The picker now has four tabs.

The same four tabs on every job: Library, Upload, From URL, From Drive.
RouteUse it whenMultiple at once
LibraryThe image is already in On-Model, from an earlier upload or an earlier jobYes
UploadThe files are on the machine you are sitting atYes, drag and drop
From URLThe image already lives somewhere public: a CDN, a product page, a supplier's linkOne at a time in the app, up to 500 per call over the API
From DriveThe shoot lands in Google Drive before it lands anywhere elseYes, multi-select

The first two you already know. Here is what the new two do.

From URL

Paste a direct link to an image, press Import, and On-Model fetches it and files it in your library. The image never touches your machine, which is the point: your CDN already has a perfectly good copy, and downloading it just to upload it again is a round trip nobody needs.

A direct image link, an Import button, and the file is in your library.

Three things worth knowing before you paste:

  • It has to be a link to the image, not to the page it sits on. A product page ending in /p/12345 will not work. Right-click the image, copy the image address, and use that.
  • JPEG, PNG, WebP, AVIF and TIFF, up to 25 MB. The same formats the upload tab takes.
  • The link has to be publicly reachable. Addresses on private or internal networks are refused, so a URL that only resolves inside your office network will not import.

This is the route that pays off when your product images already have a canonical home. If your PIM, your DAM or your storefront exposes a stable image URL per SKU, that URL is now a valid input to a job.

From Google Drive

Click Select files from Google Drive, sign in once, and pick your images in Google's own file browser. On-Model pulls them in the background and shows a per-file progress list, so a 200-image import is something you start and walk away from rather than something you supervise.

Connect once, then pick files in Google's own browser.

On-Model only ever sees the files you pick. The connection uses Google's per-file permission, which grants access to the specific images you select in the picker and nothing else. Your Drive is not browsable by us, not indexed, and not scanned. The connection expires by itself when your login session does, and you can revoke it from your Google account at any time.

Two practical notes. Folders are navigable but not selectable, so pick the image files themselves rather than the folder around them. And the same formats and 25 MB ceiling apply as everywhere else.

They all end up in the same place

This is the part that matters more than any individual tab. Whichever route an image arrives by, what you get at the other end is identical: an asset in your library, with a thumbnail, a filename, detected attributes, and a place in the same picker you started from.

So an image imported from a URL this morning can be reused from the Library tab this afternoon, tagged with the colored tags your team already uses, filtered alongside everything else in your asset library, and shared with your team exactly like an uploaded file. Nothing downstream needs to know or care how the pixels got there.

That is the whole design goal. The route is an implementation detail of your workflow, not of ours.

Over the API

The same routes are in the API, which is where they earn their keep for anyone running On-Model inside a larger pipeline. Instead of moving bytes, you hand over a list of links.

For a single image, one synchronous call returns the finished asset:

POST /upload/from-url
import requests

api_url = "https://v2.api.piktid.com"

response = requests.post(
  f"{api_url}/upload/from-url",
  headers={"Authorization": "Bearer " + access_token},
  json={"url": "https://cdn.example.com/sku-12345.jpg"},
)

asset_id = response.json()["asset_id"]

For a catalog, send up to 500 URLs at once. The call returns immediately with a batch to poll, and each URL is fetched in the background:

POST /upload/from-urls
response = requests.post(
  f"{api_url}/upload/from-urls",
  headers={"Authorization": "Bearer " + access_token},
  json={
      "urls": [f"https://cdn.example.com/sku-{n}.jpg" for n in skus],
      "project_id": project_id,
      "tag_ids": [autumn_drop_tag_id],
  },
)

batch_id = response.json()["batch_id"]

# then poll GET /upload/imports/{batch_id} until status == "completed"

Malformed links and duplicates are rejected up front and listed in the response with a reason, so one bad row does not sink the batch. The status endpoint reports every item individually: which succeeded, which failed, and why.

Note the project_id and tag_ids fields. Images can arrive already filed and already labelled, which means the point at which your catalog enters On-Model is also the point at which it is organised. Google Drive imports work the same way, on a connection you make once in the app.

Which route should you use?

  • A handful of files, on your laptop. Upload. It is still the fastest thing for small jobs.
  • A catalog with stable image URLs. From URL, over the API. This is the one that scales, because it turns "get the images into the platform" into a list of strings your existing systems already produce.
  • A shoot that lands in Drive. From Drive. It skips the download-then-reupload step entirely.
  • Anything you have run before. Library. Reuse costs nothing and keeps your set consistent.

Common questions

Can I import images into On-Model from a URL? Yes. The image picker has a From URL tab where you paste a direct link to an image file and it is fetched into your asset library. Over the API there are two endpoints: one for a single URL, and one that accepts up to 500 URLs per call and reports progress per item.

Does On-Model connect to Google Drive? Yes. The From Drive tab opens Google's own file picker. You connect once, select the images you want, and they import in the background. The connection uses Google's per-file permission, so only the files you explicitly select are ever accessible.

What image formats and sizes are accepted? JPEG, PNG, WebP, AVIF and TIFF, up to 25 MB per image, on every import route.

Why did my URL import fail? Almost always because the link points at a web page rather than at the image file itself. Copy the image address directly. Imports are also refused for addresses that are not publicly reachable, and for files over 25 MB or in an unsupported format.

Do imported images cost credits? No. Importing and storing images is free on every plan, subject to your plan's asset limit. Credits are spent when you run a job.

Can I tag images as they are imported? Yes, over the API. Both URL endpoints and the Drive endpoint accept a project and a list of tags, so assets can arrive already filed and labelled.

Try it now

Open On-Model, start any job, and click Add your images. If your product photos already live on a CDN, grab one image URL and paste it into the From URL tab. If they live in Drive, connect once and multi-select.

New to On-Model? Start with the Flat-to-Model guide, the Create-Packshot guide, or the Model-Swap guide.

asset-managementworkflowgoogle-driveapiautomationfashion-ecommerceproduct-updates