Altoviz Product Images API

Product images API

Operations 3

POST /v1/productimages/{productid} Add or update the product image #
GET /v1/productimages/{productid} Get a product image #
DELETE /v1/productimages/{id} Delete a product image #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/altoviz-com:altoviz-com-productimages-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

altoviz-com-productimages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Altoviz Product Images API
  description: 'RESTful APIs for the Altoviz services


    ## Deprecations


    ### Product prices


    A product now stores its sale price both excluding and including tax, so both are

    returned, along with the margin figures derived from them: `taxExcludedPrice`,

    `taxIncludedPrice`, `margin`, `markupRate` (margin over cost, FR « taux de marge ») and

    `marginRate` (margin over sale price, FR « taux de marque »).


    Two fields are deprecated as a result:


    | Deprecated | Use instead |

    | --- | --- |

    | `unitPrice` | `taxExcludedPrice` |

    | `isUnitPriceTaxIncluded` | `taxIncludedPrice`, to send a tax-included price |


    **`unitPrice` is now always the tax-excluded price.** It previously held whichever half

    the product was priced in, which `isUnitPriceTaxIncluded` told you. For a product priced

    tax-included, `unitPrice` therefore returns a different number than it used to, and

    `isUnitPriceTaxIncluded` is now always `false`. If you read the flag before using the

    price, your result is unchanged. If you assumed the price was tax-included, read

    `taxIncludedPrice`.


    Writing is unaffected. Both fields are still accepted and behave exactly as before:

    `unitPrice` alone is read as tax-excluded, and setting `isUnitPriceTaxIncluded` to `true`

    still means the price you are sending includes tax. `margin`, `markupRate` and

    `marginRate` are derived by the server and ignored if sent.'
  contact:
    name: Altoviz
    email: contact@altoviz.com
  license:
    name: Altoviz license
    url: https://altoviz.com/license
  version: v1
  x-logo:
    url: https://altoviz.com/altoviz-logo-ext-violet-262x72.png
    altText: Altoviz logo
servers:
- url: https://api.altoviz.com
  description: Altoviz
security:
- {}
tags:
- name: ProductImages
  description: Product images API
paths:
  /v1/productimages/{productid}:
    post:
      tags:
      - ProductImages
      summary: Add or update the product image
      operationId: POST_ProductImages_Post
      parameters:
      - name: productId
        in: path
        description: Product id
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: file
                  format: binary
            encoding:
              file:
                style: form
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      tags:
      - ProductImages
      summary: Get a product image
      operationId: GET_ProductImages_Get
      parameters:
      - name: productId
        in: path
        description: Product id
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /v1/productimages/{id}:
    delete:
      tags:
      - ProductImages
      summary: Delete a product image
      operationId: DELETE_ProductImages_Delete
      parameters:
      - name: id
        in: path
        description: Product id
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    Vat:
      type: object
      properties:
        default:
          type: boolean
          description: Indicatess if this is the default VAT for the region
          readOnly: true
        id:
          type:
          - integer
          - 'null'
          description: Vat ID
          format: int32
          readOnly: true
        label:
          type:
          - string
          - 'null'
          description: Label
          readOnly: true
        rate:
          type:
          - number
          - 'null'
          description: Rate
          format: double
        region:
          $ref: '#/components/schemas/VatRegion'
      additionalProperties: false
      description: Vat
    VatRegion:
      enum:
      - FR
      - EU
      - IE
      - DOM
      - Corse
      - Monaco
      type: string
    Product:
      type: object
      properties:
        active:
          type: boolean
          description: Indicates whether the product is active
        defaultQuantity:
          type: number
          description: Default quantity
          format: double
        description:
          type:
          - string
          - 'null'
          description: Description
        family:
          $ref: '#/components/schemas/ProductFamily'
        id:
          type: integer
          description: Product ID
          format: int32
          readOnly: true
        imageUrl:
          type:
          - string
          - 'null'
          description: Gets the product image URL
          readOnly: true
        internalId:
          type:
          - string
          - 'null'
          description: ID used in your system
        internalNotes:
          type:
          - string
          - 'null'
          description: Internal notes
        isUnitPriceTaxIncluded:
          type: boolean
          description: "<b>Deprecated</b> — always false on read, because `unitPrice` is now always the\n            tax-excluded price. There is nothing left for it to select between.\n            \nOn write it is still honoured: setting it to true means the price you are sending is\n            tax-included, exactly as before. Send `taxIncludedPrice` instead."
          deprecated: true
        margin:
          type: number
          description: 'Margin per unit, excluding tax: tax-excluded price less purchase price.


            Derived by the server on every save; a value sent here is ignored.'
          format: double
        marginRate:
          type: number
          description: 'Margin rate: the margin as a percentage of the sale price (FR « taux de marque »).


            Derived by the server on every save; a value sent here is ignored.'
          format: double
        markupRate:
          type: number
          description: 'Markup rate: the margin as a percentage of the purchase price (FR « taux de marge »).


            Derived by the server on every save; a value sent here is ignored.'
          format: double
        metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - string
            - 'null'
          description: 'Metadata: free-form key/value pairs carried with the product, for an integration to keep

            its own identifiers and flags against it.


            Sent as a PATCH, not a replacement: keys you send are added or updated, keys you leave out

            keep whatever they held, and a key is removed only when you send it as `null`. Omitting

            the property entirely leaves the whole bag untouched, and `""` stores an empty value

            rather than removing the key.'
        name:
          type:
          - string
          - 'null'
          description: Name
        number:
          type:
          - string
          - 'null'
          description: Number
        purchasePrice:
          type: number
          description: Purchase price
          format: double
        taxExcludedPrice:
          type: number
          description: Sale price excluding tax.
          format: double
        taxIncludedPrice:
          type: number
          description: Sale price including tax.
          format: double
        type:
          $ref: '#/components/schemas/ProductType'
        unit:
          $ref: '#/components/schemas/Unit'
        unitPrice:
          type: number
          description: "<b>Deprecated</b> — use `taxExcludedPrice`. Unit price, excluding tax: the same\n            value as `taxExcludedPrice`.\n            \nStill populated, and still read on write when neither new price field is sent, so no\n            existing integration has to change today.\nIt used to carry whichever half the product was edited in — the tax-included price when\n            `isUnitPriceTaxIncluded` was true — because only one price was stored. Both are stored\n            now, so this always reports the tax-excluded one and `isUnitPriceTaxIncluded` is always\n            false: a client that reads the flag keeps computing the same result."
          format: double
          deprecated: true
        vat:
          $ref: '#/components/schemas/Vat'
      additionalProperties: false
      description: Product
    ProductFamily:
      type: object
      properties:
        id:
          type: integer
          description: ID
          format: int32
          readOnly: true
        label:
          type:
          - string
          - 'null'
          description: Label
        number:
          type:
          - string
          - 'null'
          description: Number
      additionalProperties: false
      description: Product family
    UnitType:
      enum:
      - Time
      - Weight
      - Area
      - Volume
      - Dimension
      - Other
      type: string
    ProductType:
      enum:
      - Product
      - Service
      - Text
      type: string
    Unit:
      type: object
      properties:
        code:
          type:
          - string
          - 'null'
          description: Code
        conversion:
          type: number
          description: Conversion
          format: double
          readOnly: true
        decimals:
          type:
          - number
          - 'null'
          description: Decimals
          format: double
          readOnly: true
        id:
          type:
          - integer
          - 'null'
          description: Unit Id
          format: int32
          readOnly: true
        name:
          type:
          - string
          - 'null'
          description: Name
          readOnly: true
        type:
          $ref: '#/components/schemas/UnitType'
      additionalProperties: false
      description: Unit
    Error:
      type: object
      properties:
        errors:
          type:
          - array
          - 'null'
          items:
            type: string
          description: List of error messages
        message:
          type:
          - string
          - 'null'
          description: Error message
      additionalProperties: false
      description: Error
    ProblemDetails:
      type: object
      properties:
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        title:
          type:
          - string
          - 'null'
        type:
          type:
          - string
          - 'null'
      additionalProperties: {}
  securitySchemes:
    ApiKey:
      type: apiKey
      description: 'API KEY generated in application. Example: "X-API-KEY: {apiKey}"'
      name: X-API-KEY
      in: header