Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/sudomock-com:sudomock-com-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: SudoMock Account API
description: 'Product mockup API. Render PSD templates, turn product photos into reusable mockups, create still images and videos, personalize text with fonts, and manage asynchronous jobs and signed webhooks.
Every endpoint answers failures with the same envelope, so the status codes, the error_code values and the retry rule are documented once at https://sudomock.com/docs/errors rather than repeated per operation.'
version: 1.0.0
servers:
- url: https://api.sudomock.com
description: Production
tags:
- name: Account
description: Read the current account, its plan and its remaining credits.
paths:
/api/v1/packages/plans:
get:
tags:
- Account
summary: Retrieve a list of plans
description: Returns all available subscription plans with pricing and API limits
operationId: get_plans_api_v1_packages_plans_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Get Plans Api V1 Packages Plans Get
example:
plans:
- id: fa2f67af-e024-4412-8b29-a2cca7dfd4ca
name: Starter 5K
slug: starter-5k
tier: starter
description: Starter plan with 5,000 credits/month
price_monthly: 25.0
price_yearly: 250.0
credits_per_month: 5000
max_concurrent_requests: 3
max_concurrent_uploads: 2
psd_limit: 150
prices:
usd:
monthly: 25.0
yearly: 250.0
eur:
monthly: 22.0
yearly: 220.0
gbp:
monthly: 19.0
yearly: 190.0
addons:
custom_domain:
prices:
usd:
monthly: 50.0
eur:
monthly: 45.0
gbp:
monthly: 39.0
x-mint:
metadata:
sidebarTitle: List subscription plans
x-codeSamples:
- lang: Node.js
source: "const response = await fetch(\"https://api.sudomock.com/api/v1/packages/plans\", {\n method: \"GET\",\n});\n\nconst data = await response.json();\nconsole.log(data);"
- lang: PHP
source: '<?php
$ch = curl_init("https://api.sudomock.com/api/v1/packages/plans");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;'
- lang: Python
source: "import requests\n\nresponse = requests.get(\n \"https://api.sudomock.com/api/v1/packages/plans\",\n)\n\nresponse.raise_for_status()\nprint(response.json())"
- lang: Ruby
source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/packages/plans\")\nrequest = Net::HTTP::Get.new(uri)\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n http.request(request)\nend\n\nputs response.body"
- lang: Go
source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.sudomock.com/api/v1/packages/plans\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
- lang: Java
source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.sudomock.com/api/v1/packages/plans\"))\n .GET()\n .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
- lang: .NET
source: 'using System.Net.Http;
using System.Text;
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.sudomock.com/api/v1/packages/plans");
var client = new HttpClient();
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());'
- lang: cURL
source: curl -X GET "https://api.sudomock.com/api/v1/packages/plans"
/api/v1/me:
get:
tags:
- Account
summary: Retrieve the current account
description: Returns account details, subscription info, usage statistics, and API key metadata for the authenticated user.
operationId: get_current_user_info_api_v1_me_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MeResponse'
x-mint:
metadata:
sidebarTitle: Get account
security:
- ApiKeyAuth: []
x-codeSamples:
- lang: Node.js
source: "const response = await fetch(\"https://api.sudomock.com/api/v1/me\", {\n method: \"GET\",\n headers: { \"x-api-key\": \"sm_your_api_key\" },\n});\n\nconst data = await response.json();\nconsole.log(data);"
- lang: PHP
source: "<?php\n\n$ch = curl_init(\"https://api.sudomock.com/api/v1/me\");\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"GET\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"x-api-key: sm_your_api_key\",\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;"
- lang: Python
source: "import requests\n\nresponse = requests.get(\n \"https://api.sudomock.com/api/v1/me\",\n headers={\"x-api-key\": \"sm_your_api_key\"},\n)\n\nresponse.raise_for_status()\nprint(response.json())"
- lang: Ruby
source: "require \"net/http\"\nrequire \"uri\"\n\nuri = URI(\"https://api.sudomock.com/api/v1/me\")\nrequest = Net::HTTP::Get.new(uri)\nrequest[\"x-api-key\"] = \"sm_your_api_key\"\n\nresponse = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|\n http.request(request)\nend\n\nputs response.body"
- lang: Go
source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.sudomock.com/api/v1/me\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"x-api-key\", \"sm_your_api_key\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tbody, _ := io.ReadAll(res.Body)\n\tfmt.Println(string(body))\n}"
- lang: Java
source: "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.sudomock.com/api/v1/me\"))\n .header(\"x-api-key\", \"sm_your_api_key\")\n .GET()\n .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.body());"
- lang: .NET
source: 'using System.Net.Http;
using System.Text;
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.sudomock.com/api/v1/me");
request.Headers.Add("x-api-key", "sm_your_api_key");
var client = new HttpClient();
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());'
- lang: cURL
source: "curl -X GET \"https://api.sudomock.com/api/v1/me\" \\\n -H \"x-api-key: sm_your_api_key\""
components:
schemas:
MeApiKeyData:
properties:
name:
type: string
description: API key name
examples:
- Production Key
created_at:
type: string
format: date-time
description: When the API key was created
examples:
- '2025-06-15T10:30:00Z'
last_used_at:
anyOf:
- type: string
format: date-time
- type: 'null'
description: Last time the API key was used
examples:
- '2026-01-05T00:25:00Z'
total_requests:
type: integer
description: Total credit-consuming operations recorded for this API key
examples:
- 847293
type: object
required:
- name
- created_at
- total_requests
title: MeApiKeyData
description: API key metadata in /me response
example:
created_at: '2025-06-15T10:30:00Z'
last_used_at: '2026-01-05T00:25:00Z'
name: Production Key
total_requests: 847293
MeUsageData:
properties:
credits_used_this_month:
type: integer
description: Credits used in current billing period
examples:
- 12847
credits_limit:
type: integer
description: 'Credits granted for the current billing period: the plan''s monthly credits on a monthly plan, the full year''s credits on a yearly plan'
examples:
- 50000
credits_remaining:
type: integer
description: Credits remaining in the current billing period
examples:
- 37153
billing_period_start:
type: string
format: date-time
description: Start of current billing period
examples:
- '2026-01-01T00:00:00Z'
billing_period_end:
type: string
format: date-time
description: End of current billing period
examples:
- '2026-02-01T00:00:00Z'
prepaid_balance:
type: number
description: Prepaid balance remaining, in prepaid_balance_currency. 0 when the account holds no balance (never null). Independent of the credits_* fields above, which count a subscription allotment.
examples:
- 4.3
prepaid_balance_currency:
type: string
description: ISO 4217 currency of prepaid_balance. Always USD today.
examples:
- USD
type: object
required:
- credits_used_this_month
- credits_limit
- credits_remaining
- billing_period_start
- billing_period_end
- prepaid_balance
- prepaid_balance_currency
title: MeUsageData
description: Usage statistics in /me response
example:
billing_period_end: '2026-02-01T00:00:00Z'
billing_period_start: '2026-01-01T00:00:00Z'
credits_limit: 50000
credits_remaining: 37153
credits_used_this_month: 12847
prepaid_balance: 4.3
prepaid_balance_currency: USD
MeResponseData:
properties:
account:
$ref: '#/components/schemas/MeAccountData'
description: User account information
organization:
$ref: '#/components/schemas/MeOrganizationData'
description: Organization that owns the subscription and usage below
subscription:
$ref: '#/components/schemas/MeSubscriptionData'
description: Subscription details
usage:
$ref: '#/components/schemas/MeUsageData'
description: Usage statistics
api_key:
anyOf:
- $ref: '#/components/schemas/MeApiKeyData'
- type: 'null'
description: Current API key metadata
type: object
required:
- account
- organization
- subscription
- usage
title: MeResponseData
description: Data payload in /me response
MeAccountData:
properties:
uuid:
type: string
description: User UUID
examples:
- c33f5fdf-346e-4c37-8686-9afcca4645ef
email:
type: string
description: User email address
examples:
- user@example.com
name:
anyOf:
- type: string
- type: 'null'
description: Account or company name
examples:
- Acme Corp
created_at:
type: string
format: date-time
description: Account creation timestamp
examples:
- '2025-06-15T10:30:00Z'
type: object
required:
- uuid
- email
- created_at
title: MeAccountData
description: Account information in /me response
example:
created_at: '2025-06-15T10:30:00Z'
email: user@example.com
name: Acme Corp
uuid: 123e4567-e89b-12d3-a456-426614174000
MeResponse:
properties:
data:
$ref: '#/components/schemas/MeResponseData'
description: Response data
success:
type: boolean
description: Success status
default: true
examples:
- true
type: object
required:
- data
title: MeResponse
description: Your account, plan, usage and remaining credits.
example:
data:
account:
created_at: '2025-06-15T10:30:00Z'
email: user@example.com
name: Acme Corp
uuid: 123e4567-e89b-12d3-a456-426614174000
api_key:
created_at: '2025-06-15T10:30:00Z'
last_used_at: '2026-01-05T00:25:00Z'
name: Production Key
total_requests: 847293
organization:
id: 123e4567-e89b-12d3-a456-426614174000
name: Acme
subscription:
billing_channel: stripe
current_period_end: '2026-02-05T00:00:00Z'
plan: pro-25k
status: active
tier: pro
usage:
billing_period_end: '2026-02-01T00:00:00Z'
billing_period_start: '2026-01-01T00:00:00Z'
credits_limit: 50000
credits_remaining: 37153
credits_used_this_month: 12847
prepaid_balance: 0.0
prepaid_balance_currency: USD
success: true
MeOrganizationData:
properties:
id:
type: string
description: Organization UUID
examples:
- 97d7a314-29be-47b5-997c-df7f0ca71eb8
name:
type: string
description: Organization name
examples:
- Acme
type: object
required:
- id
- name
title: MeOrganizationData
description: Organization the request acts on in /me response
example:
id: 123e4567-e89b-12d3-a456-426614174000
name: Acme
MeSubscriptionData:
properties:
plan:
type: string
description: Plan slug (e.g., 'pro-25k', 'scale-100k', 'free')
examples:
- pro-25k
tier:
type: string
description: Plan tier for feature gating (e.g., 'free', 'pro', 'scale')
examples:
- pro
status:
type: string
description: 'Subscription status: ''active'', ''cancelled'', ''past_due'', ''expired'', ''paused'''
examples:
- active
current_period_end:
anyOf:
- type: string
format: date-time
- type: 'null'
description: End of current billing period
examples:
- '2026-02-05T00:00:00Z'
billing_channel:
type: string
enum:
- shopify
- stripe
- none
description: Which billing channel currently owns this subscription.
default: none
examples:
- stripe
type: object
required:
- plan
- tier
- status
title: MeSubscriptionData
description: Subscription information in /me response
example:
billing_channel: stripe
current_period_end: '2026-02-05T00:00:00Z'
plan: pro-25k
status: active
tier: pro
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: API key with sm_ prefix. Get your key at https://sudomock.com/dashboard/api-keys