openapi: 3.0.3 info: title: 'MutaMarket API Documentation' description: 'Public API for MutaMarket, the marketplace for abyssal modules in EVE Online. Browse modules with their rolled attributes, roll-quality metrics, price estimates and sale listings, import new modules from the game, and access per-type roll statistics.' version: 1.0.0 servers: - url: 'https://mutamarket.test' tags: - name: 'Abyssal Types' description: "\nRoll statistics of abyssal types and their attributes." - name: Estimators description: "\nQuality metrics of the machine-learning price estimators behind the\nestimated_value of modules." - name: Modules description: "\nBrowse abyssal modules that are for sale, retrieve single modules with all\nrolled attributes and price data, and import modules from EVE." paths: /api/abyssal-type-statistics: get: summary: 'List attribute roll ranges per abyssal type' operationId: listAttributeRollRangesPerAbyssalType description: "Returns the best and worst possible rolled value of every mutated attribute for every\nabyssal type, including the attribute definition and the abyssal type itself.\n\nUse this to normalize a module's rolls against the theoretical range of its type — it is\nthe same data MutaMarket uses for the `fraction_type` roll-quality metric and the\nattribute bars." parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: id: type: integer example: 1 type_id: type: integer example: 47408 attribute_id: type: integer example: 6 high_is_good: type: boolean example: false is_virtual: type: boolean example: false best: type: number example: 71.5 worst: type: number example: 261.00001 is_derived: type: boolean example: false attribute: type: object properties: id: type: integer example: 6 name: type: string example: capacitorNeed display_name: type: string example: 'Activation Cost' high_is_good: type: boolean example: false is_derived: type: boolean example: false unit: type: object properties: id: type: integer example: 114 name: type: string example: 'capacitor units' display_name: type: string example: GJ type: type: object properties: id: type: integer example: 47408 name: type: string example: '50MN Abyssal Microwarpdrive' meta_group: type: string example: Abyssal meta_group_id: type: integer example: 15 published: type: boolean example: true example: - id: 1 type_id: 47408 attribute_id: 6 high_is_good: false is_virtual: false best: 71.5 worst: 261.00001 is_derived: false attribute: id: 6 name: capacitorNeed display_name: 'Activation Cost' high_is_good: false is_derived: false unit: id: 114 name: 'capacitor units' display_name: GJ type: id: 47408 name: '50MN Abyssal Microwarpdrive' meta_group: Abyssal meta_group_id: 15 published: true - id: 2 type_id: 47408 attribute_id: 20 high_is_good: true is_virtual: false best: 597.99999 worst: 425.00001 is_derived: false attribute: id: 20 name: speedFactor display_name: 'Maximum Velocity Bonus' high_is_good: true is_derived: false unit: id: 124 name: 'Modifier Relative Percent' display_name: '%' type: id: 47408 name: '50MN Abyssal Microwarpdrive' meta_group: Abyssal meta_group_id: 15 published: true tags: - 'Abyssal Types' security: [] /api/estimator-statistics: get: summary: 'List price estimator quality metrics' operationId: listPriceEstimatorQualityMetrics description: "Returns quality metrics for every per-type machine-learning price estimator: how much\nhistoric sales data each model was trained on (`data_count`), how well it fits the\ntraining data (`r2`, where 1 is a perfect fit), and its average prediction error in ISK\n(`mae`) and normalized by the mean sale price (`nmae`).\n\nUseful for judging how much trust to put into the `estimated_value` of modules of a\ngiven type." parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: id: type: integer example: 1 type_id: type: integer example: 47408 name: type: string example: '50MN Abyssal Microwarpdrive' data_count: type: integer example: 4679 r2: type: number example: 0.41 mae: type: number example: 183450744.87 nmae: type: number example: 39.3 last_trained_at: type: string example: '2026-02-23T11:00:29.000000Z' data_statistics: type: object properties: 'Tech I': type: integer example: 1804 Faction: type: integer example: 333 Officer: type: integer example: 1 'Tech II': type: integer example: 243 Deadspace: type: integer example: 2182 Storyline: type: integer example: 116 created_at: type: string example: '2024-11-25T15:02:07.000000Z' updated_at: type: string example: '2026-02-23T11:00:29.000000Z' example: - id: 1 type_id: 47408 name: '50MN Abyssal Microwarpdrive' data_count: 4679 r2: 0.41 mae: 183450744.87 nmae: 39.3 last_trained_at: '2026-02-23T11:00:29.000000Z' data_statistics: 'Tech I': 1804 Faction: 333 Officer: 1 'Tech II': 243 Deadspace: 2182 Storyline: 116 created_at: '2024-11-25T15:02:07.000000Z' updated_at: '2026-02-23T11:00:29.000000Z' - id: 2 type_id: 47702 name: 'Abyssal Stasis Webifier' data_count: 11492 r2: 0.71 mae: 117016139.61 nmae: 29.67 last_trained_at: '2026-02-23T11:01:13.000000Z' data_statistics: 'Tech I': 410 Faction: 9891 Officer: 17 'Tech II': 1174 created_at: '2024-11-25T15:02:07.000000Z' updated_at: '2026-02-23T11:01:13.000000Z' tags: - Estimators security: [] '/api/modules/{module_slug}': get: summary: 'Get a single module' operationId: getASingleModule description: "Returns a single module with all rolled attributes, roll-quality metrics, the estimated\nvalue, and its current sale listing (contract or MutaMarket sell listing), if any. The\nmodule must have been imported into MutaMarket before; unknown item ids return 404." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 1052842251186 type: id: 49738 name: 'Abyssal Ballistic Control System' creator: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 mutated_attributes: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false source_type: id: 13937 name: 'Dread Guristas Ballistic Control System' meta_group: Faction meta_group_id: 4 published: true mutaplasmid: id: 49740 name: 'Gravid Ballistic Control System Mutaplasmid' contract: id: 228749822 type: item_exchange price: 290000000 asking_for_items: false plex_count: 0 non_abyssal_modules_count: 0 abyssal_modules_count: 1 issuer: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 date_issued: '2026-02-23T10:42:18.000000Z' date_expired: '2026-03-23T10:42:18.000000Z' estimated_value: 289601018.52 estimated_value_updated_at: '2026-02-23T10:41:59.000000Z' public_asset: null slug: abyssal-ballistic-control-system-1052842251186 average_fraction: 0.53770333333333 properties: id: type: integer example: 1052842251186 type: type: object properties: id: type: integer example: 49738 name: type: string example: 'Abyssal Ballistic Control System' creator: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 mutated_attributes: type: array example: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false items: type: object properties: id: type: integer example: 50 name: type: string example: cpu display_name: type: string example: 'CPU usage' value: type: number example: 21.069600465775 base_value: type: integer example: 24 fraction: type: number example: 0.814 fraction_type: type: number example: 0.4884 fraction_absolute: type: number example: 0.90597529518355 bar: type: integer example: 0 is_derived: type: boolean example: false unit: type: object properties: id: type: integer example: 106 name: type: string example: Teraflops display_name: type: string example: tf is_virtual: type: boolean example: false source_type: type: object properties: id: type: integer example: 13937 name: type: string example: 'Dread Guristas Ballistic Control System' meta_group: type: string example: Faction meta_group_id: type: integer example: 4 published: type: boolean example: true mutaplasmid: type: object properties: id: type: integer example: 49740 name: type: string example: 'Gravid Ballistic Control System Mutaplasmid' contract: type: object properties: id: type: integer example: 228749822 type: type: string example: item_exchange price: type: integer example: 290000000 asking_for_items: type: boolean example: false plex_count: type: integer example: 0 non_abyssal_modules_count: type: integer example: 0 abyssal_modules_count: type: integer example: 1 issuer: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 date_issued: type: string example: '2026-02-23T10:42:18.000000Z' date_expired: type: string example: '2026-03-23T10:42:18.000000Z' estimated_value: type: number example: 289601018.52 estimated_value_updated_at: type: string example: '2026-02-23T10:41:59.000000Z' public_asset: type: string example: null nullable: true slug: type: string example: abyssal-ballistic-control-system-1052842251186 average_fraction: type: number example: 0.53770333333333 404: description: '' content: application/json: schema: type: object example: message: 'No module with this item id is known to MutaMarket.' properties: message: type: string example: 'No module with this item id is known to MutaMarket.' tags: - Modules security: [] parameters: - in: path name: module_slug description: 'The slug of the module.' example: large-abyssal-armor-repairer-1027784685291 required: true schema: type: string - in: path name: module description: 'The EVE item id of the module, or its MutaMarket slug (e.g. `abyssal-ballistic-control-system-1052842251186`).' example: '1052842251186' required: true schema: type: string '/api/modules/{query}': get: summary: 'List modules of a type' operationId: listModulesOfAType description: "Lists all modules of an abyssal type that are currently for sale, either through a public\nin-game contract or a MutaMarket sell listing. Newest modules come first unless a sort\noption is given.\n\nThe `query` path segment must contain a type option (`type/{id-or-slug}`, e.g. `type/49738`\nor `type/abyssal-ballistic-control-system`) and accepts the same filter options as the\nmodule browser, chained as URL segments in any order:\n\n| Option | Format | Effect |\n|---|---|---|\n| sort | `sort/{field}/{direction}` | Sort by `price` (contract price), `value` (estimated value), `fraction` (average roll quality), or a dogma attribute given by id or name (e.g. `sort/50/desc` or `sort/cpu/asc`). Direction is `asc` or `desc`. Sorting by an attribute only returns modules that have that attribute. |\n| attributes | `attributes/{attribute}/{value}` (pairs, repeatable) | Filter by rolled attribute values, e.g. `attributes/cpu/20-30/damageMultiplier/2.1`. A `min-max` range bounds the value; a single number is a minimum for attributes where high is good, otherwise a maximum. |\n| meta-group | `meta-group/{group}` | One of `t1`, `t2`, `storyline`, `faction`, `officer`, `deadspace`: only modules mutated from a source module of that meta group. |\n| meta-level | `meta-level/{n}` | Only modules mutated from a source module of that meta level. |\n| contract-price | `contract-price/{max}` or `contract-price/{min}-{max}` | Bound the contract price in ISK. |\n| estimated-value | `estimated-value/{min}` or `estimated-value/{min}-{max}` | Bound the estimated value in ISK. |\n| goldbar | flag | Only modules with at least one attribute rolled better than the best regular meta variant. |\n| brownbar | flag | Only modules with at least one attribute rolled worse than the worst regular meta variant. |\n| diamondbar | flag | Only modules with the best recorded roll for the type in at least one attribute. |\n| item-exchange / auction | flag | Only contracts of that type. |\n| no-multi-item-contracts | flag | Only contracts that contain exactly one abyssal module and nothing else. |\n| contracts-only | flag | Exclude modules that are only listed as MutaMarket sell listings without a contract. |\n| without-other-items | flag | Only contracts that do not include unrelated items. |\n\nFull example: `/api/modules/type/abyssal-ballistic-control-system/sort/price/asc/goldbar/contract-price/0-500000000`\n\nResponses are cursor-paginated with 100 modules per page: request the next page by passing\n`meta.next_cursor` as the `cursor` query parameter, or follow `links.next` directly." parameters: - in: query name: cursor description: 'Pagination cursor taken from `meta.next_cursor` of a previous response.' example: null required: false schema: type: string description: 'Pagination cursor taken from `meta.next_cursor` of a previous response.' example: null - in: query name: region_id description: 'Only include modules whose contract is located in this EVE region, e.g. 10000002 for The Forge.' example: null required: false schema: type: integer description: 'Only include modules whose contract is located in this EVE region, e.g. 10000002 for The Forge.' example: null responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1052842251186 type: id: 49738 name: 'Abyssal Ballistic Control System' creator: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 mutated_attributes: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false source_type: id: 13937 name: 'Dread Guristas Ballistic Control System' meta_group: Faction meta_group_id: 4 published: true mutaplasmid: id: 49740 name: 'Gravid Ballistic Control System Mutaplasmid' contract: id: 228749822 type: item_exchange price: 290000000 asking_for_items: false plex_count: 0 non_abyssal_modules_count: 0 abyssal_modules_count: 1 issuer: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 date_issued: '2026-02-23T10:42:18.000000Z' date_expired: '2026-03-23T10:42:18.000000Z' estimated_value: 289601018.52 estimated_value_updated_at: '2026-02-23T10:41:59.000000Z' public_asset: null slug: abyssal-ballistic-control-system-1052842251186 average_fraction: 0.53770333333333 links: first: null last: null prev: null next: 'https://mutamarket.test/api/modules/type/49738?cursor=eyJtb2R1bGVzLmlkIjoxMDUyNzM1NjA0NDY5LCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9' meta: path: 'https://mutamarket.test/api/modules/type/49738' per_page: 100 next_cursor: eyJtb2R1bGVzLmlkIjoxMDUyNzM1NjA0NDY5LCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9 prev_cursor: null properties: data: type: array example: - id: 1052842251186 type: id: 49738 name: 'Abyssal Ballistic Control System' creator: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 mutated_attributes: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false source_type: id: 13937 name: 'Dread Guristas Ballistic Control System' meta_group: Faction meta_group_id: 4 published: true mutaplasmid: id: 49740 name: 'Gravid Ballistic Control System Mutaplasmid' contract: id: 228749822 type: item_exchange price: 290000000 asking_for_items: false plex_count: 0 non_abyssal_modules_count: 0 abyssal_modules_count: 1 issuer: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 date_issued: '2026-02-23T10:42:18.000000Z' date_expired: '2026-03-23T10:42:18.000000Z' estimated_value: 289601018.52 estimated_value_updated_at: '2026-02-23T10:41:59.000000Z' public_asset: null slug: abyssal-ballistic-control-system-1052842251186 average_fraction: 0.53770333333333 items: type: object properties: id: type: integer example: 1052842251186 type: type: object properties: id: type: integer example: 49738 name: type: string example: 'Abyssal Ballistic Control System' creator: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 mutated_attributes: type: array example: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false items: type: object properties: id: type: integer example: 50 name: type: string example: cpu display_name: type: string example: 'CPU usage' value: type: number example: 21.069600465775 base_value: type: integer example: 24 fraction: type: number example: 0.814 fraction_type: type: number example: 0.4884 fraction_absolute: type: number example: 0.90597529518355 bar: type: integer example: 0 is_derived: type: boolean example: false unit: type: object properties: id: type: integer example: 106 name: type: string example: Teraflops display_name: type: string example: tf is_virtual: type: boolean example: false source_type: type: object properties: id: type: integer example: 13937 name: type: string example: 'Dread Guristas Ballistic Control System' meta_group: type: string example: Faction meta_group_id: type: integer example: 4 published: type: boolean example: true mutaplasmid: type: object properties: id: type: integer example: 49740 name: type: string example: 'Gravid Ballistic Control System Mutaplasmid' contract: type: object properties: id: type: integer example: 228749822 type: type: string example: item_exchange price: type: integer example: 290000000 asking_for_items: type: boolean example: false plex_count: type: integer example: 0 non_abyssal_modules_count: type: integer example: 0 abyssal_modules_count: type: integer example: 1 issuer: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 date_issued: type: string example: '2026-02-23T10:42:18.000000Z' date_expired: type: string example: '2026-03-23T10:42:18.000000Z' estimated_value: type: number example: 289601018.52 estimated_value_updated_at: type: string example: '2026-02-23T10:41:59.000000Z' public_asset: type: string example: null nullable: true slug: type: string example: abyssal-ballistic-control-system-1052842251186 average_fraction: type: number example: 0.53770333333333 links: type: object properties: first: type: string example: null nullable: true last: type: string example: null nullable: true prev: type: string example: null nullable: true next: type: string example: 'https://mutamarket.test/api/modules/type/49738?cursor=eyJtb2R1bGVzLmlkIjoxMDUyNzM1NjA0NDY5LCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9' meta: type: object properties: path: type: string example: 'https://mutamarket.test/api/modules/type/49738' per_page: type: integer example: 100 next_cursor: type: string example: eyJtb2R1bGVzLmlkIjoxMDUyNzM1NjA0NDY5LCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9 prev_cursor: type: string example: null nullable: true 404: description: '' content: application/json: schema: type: object example: message: 'Please provide a valid type.' properties: message: type: string example: 'Please provide a valid type.' tags: - Modules security: [] parameters: - in: path name: query description: 'The abyssal type plus any filter and sort options, chained as URL segments (see description). Must contain a type segment with the EVE type id or name slug.' example: type/abyssal-ballistic-control-system/sort/price/asc/goldbar required: true schema: type: string /api/modules: post: summary: 'Import a module from EVE' operationId: importAModuleFromEVE description: "Imports a module from EVE into MutaMarket by its in-game item id and returns it with all\nrolled attributes, roll-quality metrics, and the estimated value.\n\nIdentify the module either explicitly via `type_id` + `item_id`, or by pasting an in-game\nitem link as `message` — any string containing `showinfo:{type_id}//{item_id}` works,\nwhich is what you get when you drag an item into the EVE chat window and copy the message.\n\nThe module data is fetched live from the EVE ESI API and the value estimation runs\nsynchronously, so expect this request to take a few seconds. Re-submitting an existing\nmodule refreshes its data instead of duplicating it." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 1052842251186 type: id: 49738 name: 'Abyssal Ballistic Control System' creator: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 mutated_attributes: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false source_type: id: 13937 name: 'Dread Guristas Ballistic Control System' meta_group: Faction meta_group_id: 4 published: true mutaplasmid: id: 49740 name: 'Gravid Ballistic Control System Mutaplasmid' contract: id: 228749822 type: item_exchange price: 290000000 asking_for_items: false plex_count: 0 non_abyssal_modules_count: 0 abyssal_modules_count: 1 issuer: id: 2112606829 slug: max1m-bolshakov-2112606829 name: 'Max1m Bolshakov' description: null has_premium: false corporation_id: 1000045 date_issued: '2026-02-23T10:42:18.000000Z' date_expired: '2026-03-23T10:42:18.000000Z' estimated_value: 289601018.52 estimated_value_updated_at: '2026-02-23T10:41:59.000000Z' public_asset: null slug: abyssal-ballistic-control-system-1052842251186 average_fraction: 0.53770333333333 properties: id: type: integer example: 1052842251186 type: type: object properties: id: type: integer example: 49738 name: type: string example: 'Abyssal Ballistic Control System' creator: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 mutated_attributes: type: array example: - id: 50 name: cpu display_name: 'CPU usage' value: 21.069600465775 base_value: 24 fraction: 0.814 fraction_type: 0.4884 fraction_absolute: 0.90597529518355 bar: 0 is_derived: false unit: id: 106 name: Teraflops display_name: tf is_virtual: false - id: 1255 name: droneDamageBonus display_name: 'Drone Damage Bonus' value: 0 base_value: 0 fraction: 0 fraction_type: 0 fraction_absolute: -2 bar: 0 is_derived: false unit: id: 105 name: Percentage display_name: '%' is_virtual: true - id: 213 name: missileDamageMultiplierBonus display_name: 'Missile Damage Bonus' value: 1.1202800431252 base_value: 1.12 fraction: 0.01786 fraction_type: 0.01 fraction_absolute: 0.59083450673975 bar: 0 is_derived: false unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false - id: 204 name: speedMultiplier display_name: 'Rate Of Fire Bonus' value: 0.87609376326203 base_value: 0.89 fraction: 0.78125 fraction_type: 0.52083 fraction_absolute: 0.86475956827719 bar: 0 is_derived: false unit: id: 111 name: 'Inversed Modifier Percent' display_name: '%' is_virtual: false - id: 5000004 name: dpsIncreaseMissiles display_name: 'DPS Increase' value: 1.27872162787 base_value: 1.2584269662921 fraction: 0.4648 fraction_type: 0.28443 fraction_absolute: 0.70135645073128 bar: 0 is_derived: true unit: id: 109 name: 'Modifier Percent' display_name: '%' is_virtual: false items: type: object properties: id: type: integer example: 50 name: type: string example: cpu display_name: type: string example: 'CPU usage' value: type: number example: 21.069600465775 base_value: type: integer example: 24 fraction: type: number example: 0.814 fraction_type: type: number example: 0.4884 fraction_absolute: type: number example: 0.90597529518355 bar: type: integer example: 0 is_derived: type: boolean example: false unit: type: object properties: id: type: integer example: 106 name: type: string example: Teraflops display_name: type: string example: tf is_virtual: type: boolean example: false source_type: type: object properties: id: type: integer example: 13937 name: type: string example: 'Dread Guristas Ballistic Control System' meta_group: type: string example: Faction meta_group_id: type: integer example: 4 published: type: boolean example: true mutaplasmid: type: object properties: id: type: integer example: 49740 name: type: string example: 'Gravid Ballistic Control System Mutaplasmid' contract: type: object properties: id: type: integer example: 228749822 type: type: string example: item_exchange price: type: integer example: 290000000 asking_for_items: type: boolean example: false plex_count: type: integer example: 0 non_abyssal_modules_count: type: integer example: 0 abyssal_modules_count: type: integer example: 1 issuer: type: object properties: id: type: integer example: 2112606829 slug: type: string example: max1m-bolshakov-2112606829 name: type: string example: 'Max1m Bolshakov' description: type: string example: null nullable: true has_premium: type: boolean example: false corporation_id: type: integer example: 1000045 date_issued: type: string example: '2026-02-23T10:42:18.000000Z' date_expired: type: string example: '2026-03-23T10:42:18.000000Z' estimated_value: type: number example: 289601018.52 estimated_value_updated_at: type: string example: '2026-02-23T10:41:59.000000Z' public_asset: type: string example: null nullable: true slug: type: string example: abyssal-ballistic-control-system-1052842251186 average_fraction: type: number example: 0.53770333333333 400: description: '' content: application/json: schema: type: object example: message: 'Failed to add module!' properties: message: type: string example: 'Failed to add module!' 422: description: '' content: application/json: schema: type: object example: message: 'The message field is required when item id is not present.' errors: message: - 'The message field is required when item id is not present.' properties: message: type: string example: 'The message field is required when item id is not present.' errors: type: object properties: message: type: array example: - 'The message field is required when item id is not present.' items: type: string tags: - Modules requestBody: required: false content: application/json: schema: type: object properties: message: type: string description: 'A string containing an in-game item link in the form `showinfo:{type_id}//{item_id}`. Required when `type_id`/`item_id` are not given.' example: null item_id: type: integer description: 'The EVE item id of the module. Required together with `type_id` when `message` is not given.' example: 1041420958612 type_id: type: integer description: 'The EVE type id of the (unmutated) source module. Required together with `item_id` when `message` is not given.' example: 47820 security: []