openapi: 3.0.0
info:
title: MobileAPI
description: >-
REST API providing structured device specifications, base64-encoded product
images, and pricing metadata for 31,500+ smartphones, tablets, smartwatches,
and laptops across 200+ manufacturers. Endpoints support paginated listing,
fuzzy search by name or model number, autocomplete, browsing by
manufacturer/year/type, per-category specifications (battery, display,
platform, memory, cameras, network, sound, comms, features, body, misc),
high-resolution images, manufacturer directory, account introspection
(/me/), and an AI natural-language query endpoint.
termsOfService: https://app.getterms.io/view/AG2Np/terms-of-service/en-us
contact:
name: MobileAPI.dev Support
email: [email protected]
url: https://mobileapi.dev/
version: v1
servers:
- url: https://api.mobileapi.dev
description: MobileAPI.dev production server
security:
- ApiKeyHeader: []
- ApiKeyQuery: []
paths:
/api-token-auth/:
post:
operationId: api-token-auth_create
description: ""
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthToken"
required: true
responses:
"201":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/AuthToken"
tags:
- api-token-auth
parameters: []
/api/firewall/:
get:
operationId: api_firewall_list
summary: A Viewset for Viewing Firewall Log Entries.
description: |-
This is a read-only viewset that allows authenticated admin users
to view the firewall logs via REST API.
responses:
"200":
description: ""
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/FirewallAPILog"
tags:
- api
parameters: []
"/api/firewall/{id}/":
get:
operationId: api_firewall_read
summary: A Viewset for Viewing Firewall Log Entries.
description: |-
This is a read-only viewset that allows authenticated admin users
to view the firewall logs via REST API.
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/FirewallAPILog"
tags:
- api
parameters:
- name: id
in: path
description: A unique integer value identifying this Firewall API Log.
required: true
schema:
type: integer
/demo-x7k9m2p4/devices/:
get:
operationId: demo-x7k9m2p4_devices_list
summary: List All Devices
description: "Retrieve a list of all devices. Results are paginated. **Note**:
`image_b64` returns a 100x100 thumbnail. For full-resolution images, use
the `/devices/{id}/images` endpoint."
parameters:
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (optional for demo)"
required: false
schema:
type: string
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 devices."
required: false
schema:
type: integer
responses:
"200":
description: Paginated list of devices with metadata
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DeviceList"
"400":
description: Bad request, invalid page parameter
"401":
description: Unauthorized - Authentication required
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/ai-query/:
get:
operationId: demo-x7k9m2p4_devices_ai_query
summary: Natural Language Device Query (AI-Powered) - Paid Users Only
description: "Query devices using natural language. Examples: 'Get top 5 devices
with the most RAM', 'Show me phones with best camera', 'Find cheapest 5G
phones'. Powered by AI to understand and execute your query. **Note:
This endpoint requires a paid subscription plan (Pro or Enterprise).**"
parameters:
- name: query
in: query
description: Natural language query (e.g., 'top 5 devices with most RAM',
'phones with best battery')
required: true
schema:
type: string
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'
(requires paid plan)"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (requires paid plan)"
required: false
schema:
type: string
responses:
"200":
description: Query results with explanation
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DeviceList"
"400":
description: Bad request - missing query parameter or invalid query
"401":
description: Unauthorized - invalid API key
"403":
description: Forbidden - paid plan required
"429":
description: Rate limit exceeded
"503":
description: LLM service unavailable (OpenAI API key not configured)
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/autocomplete/:
get:
operationId: demo-x7k9m2p4_devices_autocomplete
summary: Autocomplete Device Names
description: Get autocomplete suggestions for device names. Returns simplified
device data for typeahead/autocomplete features. Requires
authentication.
parameters:
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (optional for demo)"
required: false
schema:
type: string
- name: q
in: query
description: Query string (minimum 5 characters)
required: true
schema:
type: string
- name: limit
in: query
description: "Maximum number of suggestions to return (default: 10, max: 30)."
required: false
schema:
type: integer
responses:
"200":
description: Array of autocomplete suggestions
"400":
description: Bad request, invalid limit parameter
"401":
description: Unauthorized - Invalid API key
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/by-brand/:
get:
operationId: demo-x7k9m2p4_devices_by_brand
summary: "[Deprecated] List Devices by Brand - Use /by-Manufacturer/ Instead"
description: "DEPRECATED: This endpoint is deprecated. Please use
/devices/by-manufacturer/ instead. Retrieve all devices from a specific
brand/manufacturer. Requires authentication."
parameters:
- name: brand
in: query
description: "Brand/Manufacturer name to filter devices (e.g., 'Apple',
'Samsung'). DEPRECATED: Use 'manufacturer' parameter with
/by-manufacturer/ endpoint instead."
required: true
schema:
type: string
- name: limit
in: query
description: "Maximum number of results to return (default: 10, max: 30)."
required: false
schema:
type: integer
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (less secure)"
required: false
schema:
type: string
responses:
"200":
description: List of devices
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Device"
"400":
description: Bad request, missing parameter 'brand' or invalid limit
"401":
description: Unauthorized - Invalid API key
"404":
description: Brand not found
tags:
- demo-x7k9m2p4
deprecated: true
parameters: []
/demo-x7k9m2p4/devices/by-manufacturer/:
get:
operationId: demo-x7k9m2p4_devices_by_manufacturer
summary: List Devices by Manufacturer
description: "Retrieve all devices from a specific manufacturer. Results are
paginated with 50 devices per page. **Note**: `image_b64` returns a
100x100 thumbnail."
parameters:
- name: manufacturer
in: query
description: Manufacturer name to filter devices (e.g., 'Apple', 'Samsung').
required: true
schema:
type: string
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 devices."
required: false
schema:
type: integer
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (less secure)"
required: false
schema:
type: string
responses:
"200":
description: Paginated list of devices with metadata
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Device"
"400":
description: Bad request, missing parameter 'manufacturer' or invalid page
"401":
description: Unauthorized - Invalid API key
"404":
description: Manufacturer not found
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/by-type/:
get:
operationId: demo-x7k9m2p4_devices_by_type
summary: List Devices by Type
description: "Get all devices of a specific type (phone, tablet, laptop,
wearable, or other). Results are paginated with 50 devices per page.
**Note**: `image_b64` returns a 100x100 thumbnail."
parameters:
- name: type
in: query
description: "Device type: phone, tablet, laptop, wearable, or other"
required: true
schema:
type: string
enum:
- phone
- tablet
- laptop
- wearable
- other
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 devices."
required: false
schema:
type: integer
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (less secure)"
required: false
schema:
type: string
responses:
"200":
description: Paginated list of devices for the specified type with metadata
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DeviceList"
"204":
description: No devices found for the specified type
"400":
description: Bad request, missing or invalid type/page parameter
"401":
description: Unauthorized - Invalid API key
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/by-year/:
get:
operationId: demo-x7k9m2p4_devices_by_year
summary: List Devices by Launch Year
description: "Get all devices released in a specific year. The year parameter
should be a 4-digit year (e.g., 2023). Results are paginated with 50
items per page. **Note**: `image_b64` returns a 100x100 thumbnail."
parameters:
- name: year
in: query
description: Launch year (4-digit format, e.g., 2023)
required: true
schema:
type: integer
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 items."
required: false
schema:
type: integer
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (less secure)"
required: false
schema:
type: string
responses:
"200":
description: Paginated list of devices for the specified year with metadata
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Device"
"204":
description: No devices found for the specified year
"400":
description: Bad request, missing or invalid year/page parameter
"401":
description: Unauthorized - Invalid API key
tags:
- demo-x7k9m2p4
parameters: []
/demo-x7k9m2p4/devices/search/:
get:
operationId: demo-x7k9m2p4_devices_search
summary: Search Device by Name or Model Number
description: "Retrieve device details by providing either a device name (e.g.,
'iPhone 15 Pro') or a model number (e.g., 'A3520'), but not both. At
least one parameter is required. Results are paginated (default: 10 per
page, customizable via 'limit' parameter). Optionally filter by
manufacturer. Exact model number matches are prioritized over name
matches. **Note**: `image_b64` returns a 100x100 thumbnail."
parameters:
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (optional for demo)"
required: false
schema:
type: string
- name: name
in: query
description: Name of the device to search for (e.g., 'iPhone 15 Pro'). Mutually
exclusive with 'model_number'.
required: false
schema:
type: string
- name: model_number
in: query
description: Model number of the device to search for (e.g., 'A3520'). Mutually
exclusive with 'name'.
required: false
schema:
type: string
- name: manufacturer
in: query
description: Optional. Filter search results to devices from this manufacturer
only. If no devices match the manufacturer, returns empty results.
required: false
schema:
type: string
- name: limit
in: query
description: "Optional. Number of results to return per page (default: 10, max:
30). Use this to control how many devices are returned in the
response. For example, limit=1 returns only the best match."
required: false
schema:
type: integer
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 devices."
required: false
schema:
type: integer
- name: exact
in: query
description: "Set to true for exact matching (default: false). When true, only
returns devices with 100% match certainty (exact name or exact model
number match)."
required: false
schema:
type: boolean
responses:
"200":
description: Paginated list of matching devices with metadata. Each device
includes a 'match_type' field indicating whether it matched by
'name', 'exact_model', or 'partial_model'.
content:
application/json:
schema:
$ref: "#/components/schemas/Device"
"400":
description: "Bad request: must provide either 'name' or 'model_number' (but not
both), or invalid page"
"404":
description: Device not found
tags:
- demo-x7k9m2p4
parameters: []
"/demo-x7k9m2p4/devices/{id}/":
get:
operationId: demo-x7k9m2p4_devices_read
summary: Get Device by ID
description: "Retrieve detailed device information by providing its ID.
**Note**: `image_b64` returns a 100x100 thumbnail. For full-resolution
images, use `/devices/{id}/images` endpoint."
parameters:
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (optional for demo)"
required: false
schema:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/Device"
"400":
description: Bad Request - Insufficient credits
"401":
description: Unauthorized - Authentication required
"404":
description: Not Found - Device with given ID does not exist
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/battery/":
get:
operationId: demo-x7k9m2p4_devices_battery
summary: Get Device Battery Specifications
description: Get battery specifications for a specific device.
responses:
"200":
description: Battery specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Battery"
"404":
description: Device or battery specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/body/":
get:
operationId: demo-x7k9m2p4_devices_body
summary: Get Device Body Specifications
description: Get body specifications for a specific device.
responses:
"200":
description: Body specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Body"
"404":
description: Device or body specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/comms/":
get:
operationId: demo-x7k9m2p4_devices_comms
summary: Get Device Communications Specifications
description: Get communications specifications for a specific device.
responses:
"200":
description: Communications specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Comms"
"404":
description: Device or communications specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/display/":
get:
operationId: demo-x7k9m2p4_devices_display
summary: Get Device Display Specifications
description: Get display specifications for a specific device.
responses:
"200":
description: Display specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Display"
"404":
description: Device or display specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/features/":
get:
operationId: demo-x7k9m2p4_devices_features
summary: Get Device Features Specifications
description: Get features specifications for a specific device.
responses:
"200":
description: Features specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Features"
"404":
description: Device or features specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/image/":
get:
operationId: demo-x7k9m2p4_devices_image_list
description: |-
Serve full-resolution device main image for demo purposes.
Requires demo key - does NOT consume credits.
Only accessible via hidden demo URL path.
responses:
"200":
description: ""
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
required: true
schema:
type: string
"/demo-x7k9m2p4/devices/{id}/images/":
get:
operationId: demo-x7k9m2p4_devices_images
summary: Get Device Images
description: Get all images for a specific device. Returns image URLs for
full-resolution access (accessing image URLs consumes 1 credit per
request). Main device image is included as the first entry with URL
/devices/{id}/image/.
parameters:
- name: limit
in: query
description: "Maximum number of images to return (default: 10, max: 30)."
required: false
schema:
type: integer
responses:
"200":
description: Device images with URLs
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Image"
"400":
description: Bad request, invalid limit parameter
"404":
description: Device not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/main-camera/":
get:
operationId: demo-x7k9m2p4_devices_main_camera
summary: Get Device Main Camera Specifications
description: Get main camera specifications for a specific device.
responses:
"200":
description: Main camera specifications
content:
application/json:
schema:
$ref: "#/components/schemas/MainCamera"
"404":
description: Device or main camera specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/memory/":
get:
operationId: demo-x7k9m2p4_devices_memory
summary: Get Device Memory Specifications
description: Get memory specifications for a specific device.
responses:
"200":
description: Memory specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Memory"
"404":
description: Device or memory specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/misc/":
get:
operationId: demo-x7k9m2p4_devices_misc
summary: Get Device Miscellaneous Specifications
description: Get miscellaneous specifications for a specific device.
responses:
"200":
description: Miscellaneous specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Misc"
"404":
description: Device or miscellaneous specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/network/":
get:
operationId: demo-x7k9m2p4_devices_network
summary: Get Device Network Specifications
description: Get network specifications for a specific device.
responses:
"200":
description: Network specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Network"
"404":
description: Device or network specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/platform/":
get:
operationId: demo-x7k9m2p4_devices_platform
summary: Get Device Platform Specifications
description: Get platform specifications for a specific device.
responses:
"200":
description: Platform specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Platform"
"404":
description: Device or platform specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/selfie-camera/":
get:
operationId: demo-x7k9m2p4_devices_selfie_camera
summary: Get Device Selfie Camera Specifications
description: Get selfie camera specifications for a specific device.
responses:
"200":
description: Selfie camera specifications
content:
application/json:
schema:
$ref: "#/components/schemas/SelfieCamera"
"404":
description: Device or selfie camera specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
"/demo-x7k9m2p4/devices/{id}/sound/":
get:
operationId: demo-x7k9m2p4_devices_sound
summary: Get Device Sound Specifications
description: Get sound specifications for a specific device.
responses:
"200":
description: Sound specifications
content:
application/json:
schema:
$ref: "#/components/schemas/Sound"
"404":
description: Device or sound specifications not found
tags:
- demo-x7k9m2p4
parameters:
- name: id
in: path
description: A unique integer value identifying this device.
required: true
schema:
type: integer
/devices/:
get:
operationId: devices_list
summary: List All Devices
description: "Retrieve a list of all devices. Results are paginated. **Note**:
`image_b64` returns a 100x100 thumbnail. For full-resolution images, use
the `/devices/{id}/images` endpoint."
parameters:
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (optional for demo)"
required: false
schema:
type: string
- name: page
in: query
description: "Page number (default: 1). Each page contains 50 devices."
required: false
schema:
type: integer
responses:
"200":
description: Paginated list of devices with metadata
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DeviceList"
"400":
description: Bad request, invalid page parameter
"401":
description: Unauthorized - Authentication required
tags:
- devices
parameters: []
/devices/ai-query/:
get:
operationId: devices_ai_query
summary: Natural Language Device Query (AI-Powered) - Paid Users Only
description: "Query devices using natural language. Examples: 'Get top 5 devices
with the most RAM', 'Show me phones with best camera', 'Find cheapest 5G
phones'. Powered by AI to understand and execute your query. **Note:
This endpoint requires a paid subscription plan (Pro or Enterprise).**"
parameters:
- name: query
in: query
description: Natural language query (e.g., 'top 5 devices with most RAM',
'phones with best battery')
required: true
schema:
type: string
- name: Authorization
in: header
description: "Recommended: 'Token YOUR_API_KEY' or 'Bearer YOUR_API_KEY'
(requires paid plan)"
required: false
schema:
type: string
- name: key
in: query
description: "Fallback: API key as query parameter (requires paid plan)"
required: false
schema:
type: string
responses:
"200":
description: Query results with explanation
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DeviceList"
"400":
description: Bad request - missing query parameter or invalid query
"401":
description: Unauthorized - invalid API key
"403":
description: Forbidden - paid plan required
"429":
description: Rate limit exceeded
"503":
description: LLM service unavailable (OpenAI API key not configured)
# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mobileapi-dev/refs/heads/main/openapi/mobileapi-openapi.yml