Skip to main content
SuperOffice offers several ways to retrieve a person’s image. They differ mainly in how they behave when the person has no image, so pick the option that matches how your integration needs to handle a missing picture.

Option 1: Agent methods

Two agent methods return a single person’s image as binary data. POST /api/v1/Agents/Person/GetPersonImage returns the image shown in the CRM application:
POST /api/v1/Agents/BLOB/GetPersonImage returns the same image through the BLOB agent instead:
Sample response from the BLOB agent call:
Both methods take only a PersonId. Neither accepts a size parameter - GetPersonImage on the BLOB agent has a companion method, GetPersonImageWithSize, described in option 2.
If the person has no image, the two methods behave differently: PersonAgent.GetPersonImage returns an error, while BLOBAgent.GetPersonImage returns a 200 response with an empty result. If your integration must treat “no image” as a normal case rather than an error, prefer the BLOB agent method, or use option 4 with ifBlank set explicitly.

Option 2: Batch and sized retrieval

To fetch images for multiple people in one call, or to request a specific size, use POST /api/v1/Agents/Person/GetPersonImages:
PersonIds is the list of persons to fetch images for. ScaledWidth and ScaledHeight scale the returned images (in PNG format) to the given dimensions. The response is always 200 OK - for a person with no image, the matching entry is still returned, but with empty ImageData. This makes GetPersonImages a safer choice than GetPersonImage when you’re iterating over a list of people and don’t want to handle a 404 for each one individually. For a single image with a specific maximum size, use POST /api/v1/Agents/BLOB/GetPersonImageWithSize instead:

Option 3: Archive provider

The SimplePerson archive provider exposes person data, including the image, through the OData-style archive search endpoint. Its portraitThumbnail column returns the person’s image.
This approach is useful when you’re already querying the archive for other person fields (name, category, contact) and want the thumbnail included in the same result set, rather than making a separate image call per person. Because it’s a search/list provider, it naturally omits or blanks the portraitThumbnail value for people without an image, instead of returning an error.

Option 4: RESTful API

The RESTful Person entity exposes the image directly on the resource, and lets you control what happens when the person has no image. GET /api/v1/Person/{personId}/Image returns the picture, optionally scaled or converted:
By default (ifBlank not set), a person with no image returns 404. Set ifBlank to one of the fallback values - for example SrNoPhoto - to get a placeholder image instead of an error:
GET /api/v1/Person/{personId}/ImageInfo returns metadata about the stored image instead of the image itself:
ImageInfo always responds 200 OK, even when the person has no image - in that case the properties come back empty rather than the call failing. Use ImageInfo when you need to check whether an image exists (and its size or MIME type) without downloading the image itself.

Which option to use