Skip to content

Collectibles Recognition

PRICING DEMO TAXONOMY GRADING

This page describes API of Collectibles Recognition service for images. This service provides analysing of photos with collectible items via AI. The API method first detect all collectible items on a photo and then recognizes their types (Stamp, Coin, Banknote, Comics, Card, Slab Label). For detected Cards (Trading Card Game or Sport Card), the service can identify name, set, seris, card number, year of release and more.

General Info

The API follows the general rules of Ximilar API as described in Section First steps.

More Detailed Analysis/Visual Search

If you are looking for a more detailed analysis of collector items, e.g.:

  • you are missing a specific feature or game and would like to add it to this endpoint,
  • or you want to automatically read text/name from banknote/coin/trading cards/etc.,
  • or you want visual search or identification of the stamp, comics, posters, vinyl covers, cards, etc.,

then please contact us at care@ximilar.com and we can create a customized soluton for your business.

Try the service in Ximilar App or Demo

In order to get access to the Collectibles Recognition service, please register at https://app.ximilar.com. In the app pick "Ready-To-Use Image Recognition" on the main dashboard and then Collectibles Recognition. This service is available only in Business and Professional pricing plans. A public demo is located at demo.ximilar.com.

Expect large number of requests?

If you need to process large number of requests per day or month (millions of requests) and don't need to get the results immediately then just use our asynchronous requests with webhooks.

Endpoints

This service API has several api endpoints running at URLs, each of them are suitable for different use case:

https://api.ximilar.com/collectibles/v2/process       (for localization and tags)
https://api.ximilar.com/collectibles/v2/analyze       (for complete analysis)
https://api.ximilar.com/collectibles/v2/tcg_id        (for trading card games)
https://api.ximilar.com/collectibles/v2/sport_id      (for sport cards)
https://api.ximilar.com/collectibles/v2/comics_id     (for comics magazines & books & manga)
https://api.ximilar.com/collectibles/v2/card_ocr_id   (for OCR on cards)
https://api.ximilar.com/collectibles/v2/slab_id       (for graded slabs - complex analysis)
https://api.ximilar.com/collectibles/v2/detect        (for localization)
https://api.ximilar.com/collectibles/v2/slab_grade    (for graded slabs - simple analysis)

Collectibles Recognition /v2/process

Given a list of image records, this method returns and objects of collector's items for each of them. The result images with _objects (with _tags), which represents location of the detected items and if the item is in graded sleeve/package.

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
    • maximum batch of records is 10

$ curl https://api.ximilar.com/collectibles/v2/process -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "https://images.ximilar.com/examples/cards/jordan.jpeg"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • Example of statuses that can be returned:
      "status": {"code": 200, "text": "OK"}
      "status": {"code": 402, "text": "aborted by error", error_description="..."}
      "status": {"code": 500, "text": "unknown error", "error_description": "..."}
    • statistics - a map of various statistics about the processing. The only statistic included every time is
      • processing time - time of actual processing of the query [in seconds]
    • records - JSON array with the input records, each record enriched by fields, _objects with _tags
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/cards/jordan.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "b528b51b-435f-480c-bb17-a2f597340d85"
            },
            "_id": "97480960-be47-43c2-b10b-49a3052d8d70",
            "_width": 954,
            "_height": 1516,
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        83,
                        343,
                        862,
                        1445
                    ],
                    "prob": 0.9307230114936829,
                    "area": 0.5935693621634778,
                    "Top Category": "Card",
                    "_tags": {
                        "Category": [
                            {
                                "prob": 0.96291,
                                "name": "Card/Sport Card",
                                "id": "a5634621-4a37-4b37-aa3d-720b2d6b35ec"
                            }
                        ],
                        "Foil/Holo": [
                            {
                                "prob": 0.95268,
                                "name": "no_foil",
                                "id": "78b14f77-192d-45e4-919e-b7f403759e07"
                            }
                        ],
                        "Subcategory": [
                            {
                                "prob": 0.98437,
                                "name": "basketball",
                                "id": "b8ccec14-4d8a-4b26-83a2-6cc690845ba4"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.96881,
                                "name": "front",
                                "id": "651c8141-2b18-479b-a8b1-b959bc34b729"
                            }
                        ],
                        "Autograph": [
                            {
                                "prob": 0.94523,
                                "name": "not autograph",
                                "id": "5c1bb98b-cd69-42c9-ab2a-75e480ffa2b0"
                            }
                        ],
                        "Top Category": [
                            {
                                "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                                "name": "Card",
                                "prob": 1.0
                            }
                        ]
                    },
                    "_tags_simple": [
                        "not autograph",
                        "front",
                        "Card/Sport Card",
                        "basketball",
                        "no_foil",
                        "Card"
                    ],
                    "Category": "Card/Sport Card"
                }
            ]
        }
    ],
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "b528b51b-435f-480c-bb17-a2f597340d85",
        "proc_id": "de2b192f-5e9b-4998-8152-f6b9008a1bc3"
    },
    "statistics": {
        "processing time": 13.916424751281738
    }
}

Trading Card Game Identification /v2/tcg_id

Given a list of image records, this method returns identification for largest Trading Card Game card that was detected on image. This service is able to further analyze and identify the trading card.

This service can identify Subcategory (Pokemon, Yugioh!, Magic The Gathering, Flesh and Blood, OnePiece, Lorcana, Garbage Pail Kids, Star Wars Unlimited, MetaZoo, Dragon Ball Super, Weiss Schwarz, Union Arena and Digimon), Alphabet/Language, and visual features like Holo/Foil, etc. If the input card is from one of mentioned games, then we are able to able to identify the card set, set_code, series, card_number, full_name, year of release and other fields. For some of these cards and games we have links to tcgplayer.com, scryfall.com and other sites. It can also detects and analyze the graded Slab Label (getting certificate number, grade value..).

Language variations

Card identification will return best match against english language card, however you can get better insight about alphabet via _tags.Alphabet (International/Latin, Japanese, Korean, Chinese, Russian, ...) field.

If you need to distinguish international/latin alphabet language (English, German, Portuguese, Spanish, ...) send lang: true and in returned _ocr field you will find a proper language identification. For Pokemon and One Piece, we are able to properly identify english and japanese variants of the cards.

Making it faster and more accurate

The endpoint can be faster and more accurate if you send Top Category, Category, Side, Alphabet, Subcategory, Foil/Holo and Rotation in the record. You can even specify the set_code of the game.

{
    "_url": "https://images.ximilar.com/examples/demo/collectibles/gideon.jpeg",
    "Top Category": "Card",
    "Side": "front",
    "Alphabet": "latin",
    "Category": "Card/Trading Card Game",
    "Subcategory": "Magic The Gathering",
    "Foil/Holo": "Non-Foil",
    "Rotation": "rotation_ok",
    "set_code": "CMM"
}

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
  • lang: set true if you need to distinguish language of trading card in latin alphabet, otherwise take the language information from _tags
  • slab_id: if set to true, then the slab identification will be done via OCR and AI, default False. This will analyse only one slab label on the image and also count additional API credits according to /v2/slab_id.
  • slab_grade: if set to true, then AI system will analyse the company and grade on the image, default False. This will also count additional API credits according to /v2/slab_grade.
  • analyze_all: if specified it will analyze all cards on image (only 1 record/image is allowed), the perfect use case is a card binder. The number of credits is per number of analysed cards on image instead of records (cards count * credit price of endpoint).
  • pricing: This behaviour is in BETA release. If set to true, then system will try to return the prices, default False. This will also count additional API credits according to pricing operation. The API credits will not be counted if the system return no prices.

$ curl https://api.ximilar.com/collectibles/v2/tcg_id -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__PATH_TO_IMAGE_URL__"}
    ], "lang": false, "slab_id": false
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • records - JSON array with the input records, each record enriched by field _objects (of type Slab Label or Card).
      • _objects (Card) contains _tags, _tags_simple and _identification. The _identification contains best_match and alternatives fields. The identification returns info like name, full_name, year, set, ...
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/demo/collectibles/pokemon.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "75129cc0-56ea-4c3c-a00a-9f3602493a45"
            },
            "_id": "0fb1daf7-1c62-4599-9e85-6676892d5b04",
            "_width": 389,
            "_height": 659,
            "Category": "Card/Trading Card Game",
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        37,
                        164,
                        353,
                        618
                    ],
                    "prob": 0.9187777042388916,
                    "area": 0.559638932557314,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Category": [
                            {
                                "name": "Card/Trading Card Game",
                                "prob": 1.0,
                                "id": "d44efa56-09c3-4829-b3e7-226fe9cfe798",
                                "pre-filled": true
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.99885,
                                "name": "front",
                                "id": "b48a23fe-381e-4a67-b649-9839e1f7d5a7"
                            }
                        ],
                        "Subcategory": [
                            {
                                "prob": 0.99726,
                                "name": "Pokemon",
                                "id": "fdbb3942-b7e0-476a-8f13-af77aedd13e6"
                            }
                        ],
                        "Foil/Holo": [
                            {
                                "prob": 0.9972,
                                "name": "Foil/Holo",
                                "id": "f8ade5be-18f3-49d2-aa76-2431a16bd3f7"
                            }
                        ],
                        "Alphabet": [
                            {
                                "prob": 0.95873,
                                "name": "latin",
                                "id": "f0339837-aa0b-414f-acb8-d47d6ef3b7fa"
                            }
                        ],
                        "Mark": [
                            {
                                "prob": 0.98195,
                                "name": "1st",
                                "id": "7e22623d-3f34-41eb-9ef2-3507b93671ae"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.9806,
                                "name": "yes",
                                "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "Card/Trading Card Game",
                        "front",
                        "Pokemon",
                        "Foil/Holo",
                        "latin",
                        "1st"
                    ],
                    "_identification": {
                        "best_match": {
                            "series": "Classic",
                            "year": 2000,
                            "set": "Team Rocket",
                            "color": "Water",
                            "type": "Pokemon",
                            "name": "Dark Gyarados",
                            "rarity": "Rare Holo",
                            "out_of": "82",
                            "card_number": "8",
                            "set_code": "RO",
                            "full_name": "Dark Gyarados Team Rocket (RO) #8",
                            "subcategory": "Pokemon",
                            "links": {
                                "tcgplayer.com": "https://www.tcgplayer.com/product/84606",
                                "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Pokemon+Dark+Gyarados+RO+%238&_sacat=2536"
                            }
                        },
                        "alternatives": [
                            {
                                "series": "Classic",
                                "year": 2000,
                                "set": "Team Rocket",
                                "color": "Water",
                                "type": "Pokemon",
                                "name": "Dark Gyarados",
                                "rarity": "Rare",
                                "out_of": "82",
                                "card_number": "25",
                                "set_code": "RO",
                                "full_name": "Dark Gyarados Team Rocket (RO) #25",
                                "subcategory": "Pokemon",
                                "links": {
                                    "tcgplayer.com": "https://www.tcgplayer.com/product/84607",
                                    "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Pokemon+Dark+Gyarados+RO+%2325&_sacat=2536"
                                }
                            }
                        ]
                    }
                },
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        88,
                        22,
                        361,
                        131
                    ],
                    "prob": 0.6562235951423645,
                    "area": 0.11607912588599226,
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Company": [
                            {
                                "prob": 0.98103,
                                "name": "PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ],
                        "Grade": [
                            {
                                "prob": 0.99235,
                                "name": "9",
                                "id": "5ae512e1-5296-4900-ac6d-3092b71d28e7"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.94674,
                                "name": "front",
                                "id": "6b41ebfc-cfbd-4f93-a9bf-bf54b357cafd"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.9806,
                                "name": "yes",
                                "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "PSA",
                        "9",
                        "front"
                    ]
                }
            ],
            "Graded Slab": [
                {
                    "prob": 0.9806,
                    "name": "yes",
                    "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                },
                {
                    "prob": 0.0194,
                    "name": "no",
                    "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                }
            ]
        }
    ],
    "slab_grade": true,
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "75129cc0-56ea-4c3c-a00a-9f3602493a45",
        "proc_id": "c0271881-71ad-45ed-88b6-8a84b6dcfaa5"
    },
    "statistics": {
        "processing time": 0.6087548732757568
    }
}

Sport Card Identification /v2/sport_id

Given a list of images/records, this method returns identification for largest Sport Card card detected on image.

This service can identify Subcategory (Baseball, Basketball, Football, Hockey, Soccer and MMA), Side (front or back), Foil/Holo and Autograph (not signed, signed). For these sports categories we are also able to tell you name of the person, team, year of release, card_number, set_name, subcategory and company (like Topps, Panini, Upper Deck, ...). We believe that these few informations are enough to precisely identify the card.

Limitations of our database

Because there are several millions of sports cards and thousands of them are released every month, our database of sport cards is limited and so is our identification. Our database contains several millions of cards and we are constantly working on expanding the database. If you find that we are missing some cards feel free to contact us at tech@ximilar.com.

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
  • slab_id: if set to true, then the slab identification will be done via OCR and AI, default False. This will analyse only one slab label on the image and also count additional API credits according to /v2/slab_id.
  • slab_grade: if set to true, then AI system will analyse the company and grade on the image, default False. This will also count additional API credits according to /v2/slab_grade.
  • analyze_all: if specified it will analyze all cards on image (only 1 record/image is allowed), the perfect use case is a card binder. The number of credits is per number of analysed cards on image instead of records (cards count * credit price of endpoint).
  • pricing: This behaviour is in BETA release. If set to true, then system will try to return the prices, default False. This will also count additional API credits according to pricing operation. The API credits will not be counted if the system return no prices.

$ curl https://api.ximilar.com/collectibles/v2/sport_id -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__PATH_TO_IMAGE_URL__"}
    ], "slab_id": false
}'

CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/demo/collectibles/jirip.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "f3171609-1095-4426-a762-b5f9c94887c3"
            },
            "_id": "82412da1-ae7f-4ad6-899d-dce6e131d2fb",
            "_width": 1200,
            "_height": 1600,
            "Category": "Card/Sport Card",
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        76,
                        89,
                        1090,
                        1485
                    ],
                    "prob": 0.8593242168426514,
                    "area": 0.7372625,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Category": [
                            {
                                "name": "Card/Sport Card",
                                "prob": 1.0,
                                "id": "a5634621-4a37-4b37-aa3d-720b2d6b35ec",
                                "pre-filled": true
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.97805,
                                "name": "front",
                                "id": "651c8141-2b18-479b-a8b1-b959bc34b729"
                            }
                        ],
                        "Subcategory": [
                            {
                                "prob": 0.87736,
                                "name": "MMA",
                                "id": "87e0dd9b-68f2-42f2-9283-2379c43f790b"
                            }
                        ],
                        "Autograph": [
                            {
                                "prob": 0.9843,
                                "name": "not signed",
                                "id": "5c1bb98b-cd69-42c9-ab2a-75e480ffa2b0"
                            }
                        ],
                        "Foil/Holo": [
                            {
                                "prob": 0.99448,
                                "name": "Foil/Holo",
                                "id": "8d0a5c67-eb08-4908-81c9-60e74d7028e7"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.97944,
                                "name": "no",
                                "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "Card/Sport Card",
                        "front",
                        "MMA",
                        "not signed",
                        "Foil/Holo"
                    ],
                    "_identification": {
                        "best_match": {
                            "year": "2021",
                            "name": "Jiri Prochazka",
                            "set_name": "Chronicles",
                            "card_type": "Rookie Card",
                            "card_number": "128",
                            "subcategory": "MMA",
                            "sub_set": "UFC",
                            "company": "Panini",
                            "full_name": "Jiri Prochazka 2021 #128 Panini Chronicles UFC",
                            "links": {
                                "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Jiri+Prochazka+2021+Chronicles+UFC+%23128+RC&_sacat=212",
                                "comc.com": "https://www.comc.com/Cards,=Jiri+Prochazka+2021+Chronicles+UFC+%23128+RC",
                                "beckett.com": "https://marketplace.beckett.com/search_new/?term=Jiri+Prochazka+2021+Chronicles+UFC+%23128+RC"
                            }
                        },
                        "alternatives": []
                    }
                }
            ],
            "Graded Slab": [
                {
                    "prob": 0.97944,
                    "name": "no",
                    "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                },
                {
                    "prob": 0.02056,
                    "name": "yes",
                    "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                }
            ]
        }
    ],
    "slab_grade": true,
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "f3171609-1095-4426-a762-b5f9c94887c3",
        "proc_id": "65ea21bc-9e14-4573-b3cf-c0e0fdb1ff3c"
    },
    "statistics": {
        "processing time": 1.6785616874694824
    }
}

Comics Identification /v2/comics_id

Given a list of images/records, this method returns identification for largest Comics detected on image.

This service can identify comics books, comics magazines and manga. This endpoint will tell you name of the person, title, date of release, issue number, publisher and origin_date. We believe that these few informations are enough to precisely identify the comics.

Limitations of our database

Because there are several millions of comics and hundreds of them are released every month, our database of comics is limited and so is our identification. We are constantly working on expanding the database. If you find that we are missing some comics feel free to contact us at tech@ximilar.com.

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
  • slab_id: if set to true, then the slab identification will be done via OCR and AI, default False. This will analyse only one slab label on the image and also count additional API credits according to /v2/slab_id.
  • slab_grade: if set to true, then AI system will analyse the company and grade on the image, default False. This will also count additional API credits according to /v2/slab_grade.
  • analyze_all: if specified it will analyze all comics on image (only 1 record/image is allowed), the number of credits is per number of analysed comics on image instead of records (comics count * credit price of endpoint)
  • pricing: This behaviour is in BETA release. If set to true, then system will try to return the prices, default False. This will also count additional API credits according to pricing operation. The API credits will not be counted if the system return no prices.

$ curl https://api.ximilar.com/collectibles/v2/comics_id -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [{ "_url": "__PATH_TO_IMAGE_URL__"}], "slab_id": true
}'

CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "__PATH_TO_IMAGE_URL__",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "d0bbbb58-490f-4721-8273-e32bc01c9bc6"
            },
            "_id": "dec258cf-4d77-4c55-b4b7-418725b4be08",
            "_width": 419,
            "_height": 640,
            "_objects": [
                {
                    "name": "Comics",
                    "id": "520eee19-2502-41a7-a1cf-23c6daf22138",
                    "bound_box": [
                        38,
                        93,
                        370,
                        621
                    ],
                    "prob": 0.7870738506317139,
                    "area": 0.6536992840095466,
                    "Top Category": [
                        {
                            "id": "6abbefd9-5571-4915-a057-2fba3c3663a3",
                            "name": "Comics",
                            "prob": 1.0
                        }
                    ],
                    "_identification": {
                        "best_match": {
                            "name": "Fantastic Four",
                            "title": "Counter-Earth Must Die--At The Hand Of Galactus!",
                            "date": "August 1976",
                            "number": "173",
                            "publisher": "Marvel",
                            "origin_date": "1961",
                            "links": {
                                "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Comics+Fantastic+Four+%23173+Marvel",
                                "midtowncomics.com": "https://www.midtowncomics.com/search?q=Comics+Fantastic+Four+%23173+Marvel"
                            }
                        },
                        "alternatives": []
                    }
                },
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        20,
                        14,
                        375,
                        101
                    ],
                    "prob": 0.583219051361084,
                    "area": 0.115173776849642,
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Category": [
                            {
                                "prob": 0.73168,
                                "name": "CGC-COMICS",
                                "id": "b2aae47e-a788-46c7-98f5-b27d3d1bdd3c"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.94687,
                                "name": "front",
                                "id": "6b41ebfc-cfbd-4f93-a9bf-bf54b357cafd"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.95005,
                                "name": "yes",
                                "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "CGC-COMICS",
                        "front"
                    ],
                    "_ocr": {
                        "full_text": "CGC UNIVERSAL GRADE 7.5 Fantastic Four173 Marvel Comic.1/76",
                        "lang_name": "english",
                        "lang": "en"
                    },
                    "_identification": {
                        "best_match": {
                            "name": "FANTASTIC FOUR",
                            "brand": "MARVEL COMIC",
                            "verbal_grade": "Fantastic",
                            "grade": "7.5",
                            "year": "1976",
                            "card_no": "173",
                            "certificate_number": null,
                            "lang": null
                        }
                    }
                }
            ],
            "Graded Slab": [
                {
                    "prob": 0.95005,
                    "name": "yes",
                    "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                },
                {
                    "prob": 0.04995,
                    "name": "no",
                    "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                }
            ]
        }
    ],
    "slab_id": true,
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "d0bbbb58-490f-4721-8273-e32bc01c9bc6",
        "proc_id": "cfc7eff0-05a1-47e4-8e30-79bad9253dd5"
    },
    "statistics": {
        "processing time": 0.7930326461791992
    }
}

Card OCR & Identification /v2/card_ocr_id

Given a list of image records, this method returns and identification for largest card detected (and largest slab label if present) on image. This method is suitable for reading text Cards and Slab Labels (PSA, BECKETT, ...). The identification is done by mining of information from ocr text via AI model (and that is why is sometimes not exactly precise).

Partially correct identification (missing year) for card can look like this:

{
    "name": "ERLING BRAUT HAALAND",
    "year": null,
    "subcategory": "soccer"
}

Correct identification for graded slab label can look like this:

{
    "name": "2019 FINEST UEFA ERLING BRAUT HAALAND",
    "grade": "10",
    "year": "2019",
    "certificate_number": "51974133"
}

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details

$ curl https://api.ximilar.com/collectibles/v2/card_ocr_id -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__URL_PATH__"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • records - JSON array with the input records, each record enriched by field _objects (of type Slab Label or Card).
      • _objects (Card, Slab Label) contains _ocr, _tags, _tags_simple and _identification. The _identification contains best_match field. The identification returns info like name, full_name, year, grade, certificate_number...
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "__URL_PATH__",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "37d5842e-a6f1-443f-a2c4-6cafa5ed604b"
            },
            "_id": "8c26e90a-627e-444e-a3a6-92845f581858",
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        213,
                        403,
                        872,
                        1273
                    ],
                    "prob": 0.978815495967865,
                    "area": 0.36865354938271605,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Category": [
                            {
                                "prob": 0.99694,
                                "name": "Card/Sport Card",
                                "id": "a5634621-4a37-4b37-aa3d-720b2d6b35ec"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.98772,
                                "name": "front",
                                "id": "651c8141-2b18-479b-a8b1-b959bc34b729"
                            }
                        ],
                        "Subcategory": [
                            {
                                "prob": 0.96789,
                                "name": "soccer",
                                "id": "3275f70c-10f4-4807-89ca-f166e8c3aa7c"
                            }
                        ],
                        "Autograph": [
                            {
                                "prob": 0.97277,
                                "name": "not autograph",
                                "id": "5c1bb98b-cd69-42c9-ab2a-75e480ffa2b0"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "Card/Sport Card",
                        "front",
                        "soccer",
                        "not autograph"
                    ],
                    "_ocr": {
                        "texts": [
                            {
                                "polygon": [
                                    [
                                        61.0,
                                        60.0
                                    ],
                                    [
                                        159.0,
                                        55.0
                                    ],
                                    [
                                        160.0,
                                        76.0
                                    ],
                                    [
                                        61.0,
                                        81.0
                                    ]
                                ],
                                "text": "Tirest",
                                "prob": 0.8078048825263977
                            },
                            {
                                "polygon": [
                                    [
                                        519.0,
                                        97.0
                                    ],
                                    [
                                        557.0,
                                        97.0
                                    ],
                                    [
                                        557.0,
                                        111.0
                                    ],
                                    [
                                        519.0,
                                        111.0
                                    ]
                                ],
                                "text": "SEFA",
                                "prob": 0.7368016839027405
                            },
                            {
                                "polygon": [
                                    [
                                        481.0,
                                        113.0
                                    ],
                                    [
                                        597.0,
                                        111.0
                                    ],
                                    [
                                        597.0,
                                        129.0
                                    ],
                                    [
                                        482.0,
                                        131.0
                                    ]
                                ],
                                "text": "CHAMPIONS",
                                "prob": 0.9519932866096497
                            },
                            {
                                "polygon": [
                                    [
                                        508.0,
                                        127.0
                                    ],
                                    [
                                        573.0,
                                        129.0
                                    ],
                                    [
                                        572.0,
                                        146.0
                                    ],
                                    [
                                        508.0,
                                        144.0
                                    ]
                                ],
                                "text": "LEAGUE,",
                                "prob": 0.8668462634086609
                            },
                            {
                                "polygon": [
                                    [
                                        207.0,
                                        300.0
                                    ],
                                    [
                                        372.0,
                                        307.0
                                    ],
                                    [
                                        370.0,
                                        363.0
                                    ],
                                    [
                                        205.0,
                                        356.0
                                    ]
                                ],
                                "text": "Red Bul",
                                "prob": 0.9309224486351013
                            },
                            {
                                "polygon": [
                                    [
                                        61.0,
                                        712.0
                                    ],
                                    [
                                        250.0,
                                        684.0
                                    ],
                                    [
                                        254.0,
                                        719.0
                                    ],
                                    [
                                        66.0,
                                        747.0
                                    ]
                                ],
                                "text": "ERLING BRAUT",
                                "prob": 0.9668567180633545
                            },
                            {
                                "polygon": [
                                    [
                                        186.0,
                                        753.0
                                    ],
                                    [
                                        370.0,
                                        730.0
                                    ],
                                    [
                                        375.0,
                                        773.0
                                    ],
                                    [
                                        191.0,
                                        795.0
                                    ]
                                ],
                                "text": "HAALAND",
                                "prob": 0.9960637092590332
                            },
                            {
                                "polygon": [
                                    [
                                        330.0,
                                        786.0
                                    ],
                                    [
                                        471.0,
                                        766.0
                                    ],
                                    [
                                        474.0,
                                        788.0
                                    ],
                                    [
                                        333.0,
                                        807.0
                                    ]
                                ],
                                "text": "FC SALZBURG",
                                "prob": 0.9561893343925476
                            }
                        ],
                        "full_text": "Tirest SEFA CHAMPIONS LEAGUE, Red Bul ERLING BRAUT HAALAND FC SALZBURG ",
                        "lang_name": "german",
                        "lang": "de"
                    },
                    "_identification": {
                        "best_match": {
                            "name": "ERLING BRAUT HAALAND",
                            "year": null,
                            "subcategory": "soccer"
                        }
                    }
                },
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        205,
                        108,
                        868,
                        309
                    ],
                    "prob": 0.7645022869110107,
                    "area": 0.0856886574074074,
                    "_tags": {
                        "Category": [
                            {
                                "prob": 0.97388,
                                "name": "PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "PSA"
                    ],
                    "_ocr": {
                        "full_text": "#91 2019 FINESTUCL ERLING BRAUT HAALAND GEMMT 10 51974133 ",
                        "lang_name": "german",
                        "lang": "de"
                    },
                    "_identification": {
                        "best_match": {
                            "name": "2019 FINEST UEFA ERLING BRAUT HAALAND",
                            "grade": "10",
                            "year": "2019",
                            "certificate_number": "51974133"
                        }
                    }
                }
            ]
        }
    ],
    "statistics": {
        "processing time": 6.20737099647522
    },
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "37d5842e-a6f1-443f-a2c4-6cafa5ed604b",
        "proc_id": "189995ef-c1e0-4799-a35e-ad32f4730c81"
    }
}

Collectibles Complex Analysis /v2/analyze

Given a list of image records, this method returns a complex analysis for collectibles. It is combination of /v2/process, /v2/comics_id, /v2/tcg_id and /v2/sport_id endpoints. If you know the type of your collectible item the use For largest card detected (and largest slab label if present) it also tries to do analysis and identification of card.

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details

$ curl https://api.ximilar.com/collectibles/v2/analyze -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__URL_PATH__"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • records - JSON array with the input records, each record enriched by field _objects (of type Slab Label or Card).
      • _objects the specific objects (Card, Slab Label) contains _tags, _tags_simple, _ocr and _identification.
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/demo/collectibles/soccer.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "c4a2ee3b-316d-4593-81cf-2c81a8f58c49"
            },
            "_id": "80a1593c-b7fd-40f6-9fb5-6c4f027ac2f4",
            "_width": 1080,
            "_height": 1440,
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        232,
                        395,
                        839,
                        1257
                    ],
                    "prob": 0.9754966497421265,
                    "area": 0.3364416152263375,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Category": [
                            {
                                "prob": 0.99767,
                                "name": "Card/Sport Card",
                                "id": "a5634621-4a37-4b37-aa3d-720b2d6b35ec"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.98671,
                                "name": "front",
                                "id": "651c8141-2b18-479b-a8b1-b959bc34b729"
                            }
                        ],
                        "Subcategory": [
                            {
                                "prob": 0.98253,
                                "name": "Soccer",
                                "id": "3275f70c-10f4-4807-89ca-f166e8c3aa7c"
                            }
                        ],
                        "Autograph": [
                            {
                                "prob": 0.9738,
                                "name": "not signed",
                                "id": "5c1bb98b-cd69-42c9-ab2a-75e480ffa2b0"
                            }
                        ],
                        "Foil/Holo": [
                            {
                                "prob": 0.99121,
                                "name": "Non-Foil",
                                "id": "78b14f77-192d-45e4-919e-b7f403759e07"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.97299,
                                "name": "yes",
                                "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "Card/Sport Card",
                        "front",
                        "Soccer",
                        "not signed",
                        "Non-Foil"
                    ],
                    "_identification": {
                        "best_match": {
                            "card_number": "91",
                            "year": "2019",
                            "card_type": "Rookie Card",
                            "set_name": "Finest",
                            "name": "Erling Braut Haaland",
                            "subcategory": "Soccer",
                            "sub_set": "UEFA Champions League",
                            "company": "Topps",
                            "full_name": "Erling Braut Haaland 2019 #91 Topps Finest UEFA Champions League",
                            "links": {
                                "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Erling+Braut+Haaland+2019+Finest+UEFA+Champions+League+%2391+RC&_sacat=212",
                                "comc.com": "https://www.comc.com/Cards,=Erling+Braut+Haaland+2019+Finest+UEFA+Champions+League+%2391+RC",
                                "beckett.com": "https://marketplace.beckett.com/search_new/?term=Erling+Braut+Haaland+2019+Finest+UEFA+Champions+League+%2391+RC"
                            }
                        },
                        "alternatives": [
                            {
                                "card_number": "605",
                                "year": "2015",
                                "sub_set": "Limited",
                                "set_name": "",
                                "name": "Huston Street",
                                "subcategory": "Baseball",
                                "company": "Topps",
                                "full_name": "Huston Street 2015 #605 Topps Limited",
                                "links": {
                                    "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=Huston+Street+2015+Limited+%23605+&_sacat=212",
                                    "comc.com": "https://www.comc.com/Cards,=Huston+Street+2015+Limited+%23605+",
                                    "beckett.com": "https://marketplace.beckett.com/search_new/?term=Huston+Street+2015+Limited+%23605+"
                                }
                            }
                        ]
                    }
                },
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        210,
                        101,
                        862,
                        331
                    ],
                    "prob": 0.7465514540672302,
                    "area": 0.09642489711934156,
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Company": [
                            {
                                "prob": 0.97496,
                                "name": "PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ],
                        "Grade": [
                            {
                                "prob": 0.97561,
                                "name": "10",
                                "id": "80e8287a-d5fb-47de-8f35-d5b070f3b035"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.97627,
                                "name": "front",
                                "id": "6b41ebfc-cfbd-4f93-a9bf-bf54b357cafd"
                            }
                        ],
                        "Graded": [
                            {
                                "prob": 0.97299,
                                "name": "yes",
                                "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "PSA",
                        "10",
                        "front"
                    ]
                }
            ],
            "Graded Slab": [
                {
                    "prob": 0.97299,
                    "name": "yes",
                    "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                },
                {
                    "prob": 0.02701,
                    "name": "no",
                    "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                }
            ]
        }
    ],
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "c4a2ee3b-316d-4593-81cf-2c81a8f58c49",
        "proc_id": "7653a6f6-6805-4307-90f3-11579ccab3fc"
    },
    "statistics": {
        "processing time": 1.5268957614898682
    }
}

Slab Reading & Identification /v2/slab_id

Given a list of image records, this method returns detected objects (Card, Slab Label) with ocr analysis. The result Slab Label object with _objects (_tags and _ocr included), which represents location of the detected items (and readed text). The Slab Label contains information about company/category (BECKETT, CGC, PSA, SGC, ACE, MANA, TAG, OTHER) For one Slab Label per image, this model analyze readed text via AI of the slab and returns the analyzed info in _identification field:

"_identification": {
    "best_match": {
        "name": "POKEMON ROCKET DARK GYARADOS-HOLO",
        "grade": "9",
        "year": "2000",
        "certificate_number": "48658983",
        ...
    }
}

Missing grading company?

If you would like to analyse labels from company which we do not include, feel free to contact us at tech@ximilar.com

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
    • maximum batch of records is 10

$ curl https://api.ximilar.com/collectibles/v2/slab_id -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__URL_IMAGE__"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • Example of statuses that can be returned:
      "status": {"code": 200, "text": "OK"}
      "status": {"code": 402, "text": "aborted by error", error_description="..."}
      "status": {"code": 500, "text": "unknown error", "error_description": "..."}
    • statistics - a map of various statistics about the processing. The only statistic included every time is
      • processing time - time of actual processing of the query [in seconds]
    • records - JSON array with the input records, each record enriched by fields, Slab Label and _objects with _tags
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/demo/collectibles/pokemon.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "7f10ec20-262e-4a05-93ce-399e0813ef1d"
            },
            "_id": "51750739-c7a3-4ad7-aa0f-28d9fa27d845",
            "_objects": [
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        88,
                        22,
                        361,
                        131
                    ],
                    "prob": 0.6562235951423645,
                    "area": 0.11607912588599226,
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Company": [
                            {
                                "prob": 0.9808,
                                "name": "PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.94674,
                                "name": "front",
                                "id": "6b41ebfc-cfbd-4f93-a9bf-bf54b357cafd"
                            }
                        ],
                        "Category": [
                            {
                                "prob": 0.9808,
                                "name": "Slab Label/PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "PSA",
                        "front"
                    ],
                    "_ocr": {
                        "texts": [
                            {
                                "polygon": [
                                    [
                                        236.0,
                                        20.0
                                    ],
                                    [
                                        263.0,
                                        20.0
                                    ],
                                    [
                                        263.0,
                                        45.0
                                    ],
                                    [
                                        236.0,
                                        45.0
                                    ]
                                ],
                                "text": "#8",
                                "prob": 0.989625096321106
                            },
                            {
                                "polygon": [
                                    [
                                        4.0,
                                        24.0
                                    ],
                                    [
                                        159.0,
                                        24.0
                                    ],
                                    [
                                        159.0,
                                        43.0
                                    ],
                                    [
                                        4.0,
                                        43.0
                                    ]
                                ],
                                "text": "POKEMON ROCKET",
                                "prob": 0.9793843030929565
                            },
                            {
                                "polygon": [
                                    [
                                        1.0,
                                        42.0
                                    ],
                                    [
                                        167.0,
                                        42.0
                                    ],
                                    [
                                        167.0,
                                        61.0
                                    ],
                                    [
                                        1.0,
                                        61.0
                                    ]
                                ],
                                "text": "GYARADOS-HOLO",
                                "prob": 0.9837774038314819
                            },
                            {
                                "polygon": [
                                    [
                                        216.0,
                                        41.0
                                    ],
                                    [
                                        263.0,
                                        41.0
                                    ],
                                    [
                                        263.0,
                                        62.0
                                    ],
                                    [
                                        216.0,
                                        62.0
                                    ]
                                ],
                                "text": "MINT",
                                "prob": 0.9965052604675293
                            },
                            {
                                "polygon": [
                                    [
                                        246.0,
                                        59.0
                                    ],
                                    [
                                        263.0,
                                        59.0
                                    ],
                                    [
                                        263.0,
                                        81.0
                                    ],
                                    [
                                        246.0,
                                        81.0
                                    ]
                                ],
                                "text": "9",
                                "prob": 0.9890574812889099
                            },
                            {
                                "polygon": [
                                    [
                                        84.0,
                                        73.0
                                    ],
                                    [
                                        131.0,
                                        73.0
                                    ],
                                    [
                                        131.0,
                                        102.0
                                    ],
                                    [
                                        84.0,
                                        102.0
                                    ]
                                ],
                                "text": "PA",
                                "prob": 0.9283953905105591
                            },
                            {
                                "polygon": [
                                    [
                                        178.0,
                                        76.0
                                    ],
                                    [
                                        264.0,
                                        76.0
                                    ],
                                    [
                                        264.0,
                                        97.0
                                    ],
                                    [
                                        178.0,
                                        97.0
                                    ]
                                ],
                                "text": "48658983",
                                "prob": 0.9988992810249329
                            }
                        ],
                        "full_text": "#8 POKEMON ROCKET GYARADOS-HOLO MINT 9 PA 48658983",
                        "lang_name": "english",
                        "lang": "en"
                    },
                    "_identification": {
                        "best_match": {
                            "name": "GYARADOS",
                            "brand": "POKEMON",
                            "verbal_grade": "MINT",
                            "grade": "9",
                            "year": null,
                            "card_no": "#8",
                            "certificate_number": "48658983",
                            "lang": null,
                            "set": "ROCKET",
                            "rarity": "HOLO",
                            "links": {
                                "psacard.com": "https://www.psacard.com/cert/48658983"
                            }
                        }
                    }
                },
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        37,
                        164,
                        353,
                        618
                    ],
                    "prob": 0.9187777042388916,
                    "area": 0.559638932557314,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ]
                }
            ],
            "_width": 389,
            "_height": 659
        }
    ],
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "7f10ec20-262e-4a05-93ce-399e0813ef1d",
        "proc_id": "125f4de8-94fc-46c2-a67b-7482b253a575"
    },
    "statistics": {
        "processing time": 1.936791181564331
    }
}

Slab Grade /v2/slab_grade

Given a list of image records, this method returns detected objects (Card, Slab Label) with image recognition analysis. The result Slab Label object with _objects (_tags included), which represents location of the detected items (and analysed features - Company, Grade, Side). The Slab Label object contains information about Company/Category (BECKETT, CGC, PSA, SGC, MANA, ACE, TAG, Other), Grade and Side.

Missing grading company?

If you would like to analyse labels from company which we do not include, feel free to contact us at tech@ximilar.com

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
    • maximum batch of records is 10

$ curl https://api.ximilar.com/collectibles/v2/slab_grade -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "__URL_IMAGE__"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • Example of statuses that can be returned:
      "status": {"code": 200, "text": "OK"}
      "status": {"code": 402, "text": "aborted by error", error_description="..."}
      "status": {"code": 500, "text": "unknown error", "error_description": "..."}
    • statistics - a map of various statistics about the processing. The only statistic included every time is
      • processing time - time of actual processing of the query [in seconds]
    • records - JSON array with the input records, each record enriched by fields, Slab Label and _objects with _tags
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "https://images.ximilar.com/examples/demo/collectibles/pokemon.jpeg",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "ac414766-83e1-41f2-a589-7958c1fa9f23"
            },
            "_id": "1ee48bb5-e92f-44e7-90cd-72eb898b537e",
            "_objects": [
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        88,
                        22,
                        361,
                        131
                    ],
                    "prob": 0.6562235951423645,
                    "area": 0.11607912588599226,
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ],
                    "_tags": {
                        "Company": [
                            {
                                "prob": 0.9808,
                                "name": "PSA",
                                "id": "2f4545e7-08e4-492b-ab4e-02a409d58988"
                            }
                        ],
                        "Grade": [
                            {
                                "prob": 0.5204,
                                "name": "9",
                                "id": "445d621b-60c1-4e56-b33e-b82d2905ed9c"
                            }
                        ],
                        "Side": [
                            {
                                "prob": 0.94674,
                                "name": "front",
                                "id": "6b41ebfc-cfbd-4f93-a9bf-bf54b357cafd"
                            }
                        ]
                    },
                    "_tags_simple": [
                        "PSA",
                        "9",
                        "front"
                    ]
                },
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        37,
                        164,
                        353,
                        618
                    ],
                    "prob": 0.9187777042388916,
                    "area": 0.559638932557314,
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ]
                }
            ],
            "Graded Slab": [
                {
                    "prob": 0.9806,
                    "name": "yes",
                    "id": "9d7bf709-dfbc-4595-91be-a9d779b5f33c"
                },
                {
                    "prob": 0.0194,
                    "name": "no",
                    "id": "3a532911-7d7c-4b9b-8442-f0f293952be6"
                }
            ],
            "_width": 389,
            "_height": 659
        }
    ],
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "ac414766-83e1-41f2-a589-7958c1fa9f23",
        "proc_id": "39e6072b-8430-4821-9047-1fecbf807930"
    },
    "statistics": {
        "processing time": 0.8551025390625
    }
}

Collectibles Detection /v2/detect

Given a list of image records, this method returns and objects of collector's items for each of them. The result images with _objects which represents location of the detected items. This method can be used as a first step for other endpoints as /v2/tcg_id if you know that multiple cards are on the image.

Parameters:

  • records: list of photos to analyze
    • must contain either of _url or _base64 field - see section image data for details
    • maximum batch of records is 10

$ curl https://api.ximilar.com/collectibles/v2/detect -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "https://images.ximilar.com/examples/cards/jordan.jpeg"}
    ]
}'

Returns:

  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
      • error_description - in case of the processing ended with error (codes 4XX), this field contains a detailed description of the error; this might include Java stack traces.
    • Example of statuses that can be returned:
      "status": {"code": 200, "text": "OK"}
      "status": {"code": 402, "text": "aborted by error", error_description="..."}
      "status": {"code": 500, "text": "unknown error", "error_description": "..."}
    • statistics - a map of various statistics about the processing. The only statistic included every time is
      • processing time - time of actual processing of the query [in seconds]
    • records - JSON array with the input records, each record enriched by fields (_objects)
CLICK TO SHOW JSON RESULT

{
    "records": [
        {
            "_url": "__IMAGE_URL__",
            "_status": {
                "code": 200,
                "text": "OK",
                "request_id": "1e459b5d-8bed-4d9a-8647-fc1c99997875"
            },
            "_id": "ebb627dd-e859-4677-83cf-612032d2ebb9",
            "_objects": [
                {
                    "name": "Card",
                    "id": "76fa9ec3-e0d9-408a-b582-55a1cd6712e0",
                    "bound_box": [
                        105,
                        348,
                        853,
                        1436
                    ],
                    "prob": 0.9431861639022827,
                    "area": 0.5242204881844521,
                    "expand_by_bound_box": [
                        91,
                        327,
                        867,
                        1457
                    ],
                    "Top Category": [
                        {
                            "id": "8ae26c4a-ae79-4c01-9b54-ac4e2b42e914",
                            "name": "Card",
                            "prob": 1.0
                        }
                    ]
                },
                {
                    "name": "Slab Label",
                    "id": "9242aeda-1a35-4c93-b75c-958af91e63a7",
                    "bound_box": [
                        77,
                        32,
                        943,
                        249
                    ],
                    "prob": 0.4136030375957489,
                    "area": 0.12104897690483277,
                    "expand_by_bound_box": [
                        60,
                        28,
                        960,
                        253
                    ],
                    "Top Category": [
                        {
                            "id": "79425eda-c25b-48e3-a9de-0fe8303a4635",
                            "name": "Slab Label",
                            "prob": 1.0
                        }
                    ]
                }
            ],
            "_width": 999,
            "_height": 1554
        }
    ],
    "status": {
        "code": 200,
        "text": "OK",
        "request_id": "1e459b5d-8bed-4d9a-8647-fc1c99997875",
        "proc_id": "219ad5f2-ad11-440c-b337-4f78f304e47b"
    },
    "statistics": {
        "processing time": 2.1185216903686523
    }
}