StableDesign — MPP Grade C
On-chain Activity
Compliance Checks
1 issue
- Endpoint GET /api/health returned 200 without payment
Paid Operations (9)
GET /api/health dynamic
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| verbose | query | boolean | No | Include detailed service info |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| status | string | - |
| timestamp | string (date-time) | - |
GET /api/oauth/authorize dynamic
Redirects the user to Canva's authorization page. Must be opened in a browser. Sets a PKCE verifier cookie for the callback.
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| redirect_uri | query | string | No | Override the default OAuth redirect URI |
GET /api/oauth/callback dynamic
Handles the OAuth callback from Canva. Exchanges the authorization code for an access token and stores it server-side.
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| code | query | string | Yes | Authorization code from Canva |
GET /api/user dynamic
Returns the Canva user profile for the current OAuth session.
- Amount
- map[amount:0 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| fields | query | string | No | Comma-separated list of fields to return |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| team_id | string | - |
| user_id | string | - |
POST /api/designs/create dynamic
Creates a design from a preset type (doc, email, presentation, whiteboard), custom dimensions (40-8000px), or with an uploaded asset. Requires Canva OAuth.
- Amount
- map[amount:0.010000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| asset_id | string | No | Canva asset ID to insert into the design |
| height | integer | No | Custom height in pixels |
| preset | string | No |
Design preset type
enum: doc, email, presentation, whiteboard |
| title | string | No | Design title |
| width | integer | No | Custom width in pixels |
POST /api/designs/get dynamic
Retrieves metadata, URLs, and details for a specific Canva design. Requires Canva OAuth.
- Amount
- map[amount:0.010000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| design_id | string | Yes | Canva design ID |
GET /api/designs/list dynamic
Lists designs with optional filtering by ownership and sorting. Supports pagination via continuation token. Requires Canva OAuth.
- Amount
- map[amount:0.010000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| continuation | query | string | No | Pagination continuation token |
| ownership | query | string | No | Filter by ownership type |
| sort_by | query | string | No | Sort order for results |
POST /api/designs/export dynamic
Exports a design to PDF, JPG, PNG, GIF, PPTX, or MP4. Not all formats work with all design types — use PDF as the safe default. Async with automatic polling (up to 30s). Export URLs expire after 24 hours. Requires Canva OAuth.
- Amount
- map[amount:0.020000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| design_id | string | Yes | Canva design ID |
| format | object | Yes |
POST /api/assets/upload dynamic
Uploads an asset by URL. Supports JPEG, PNG, GIF, WebP, HEIC, TIFF (50MB max) and MP4, WebM, MKV (500MB max). Async with automatic polling (up to 15s). Requires Canva OAuth.
- Amount
- map[amount:0.010000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Asset name |
| url | string (uri) | Yes | Public URL of the image or video to upload |
Payment Methods
- Methods
- -
- Intents
- -
- Currencies (discovery)
- -
- Multiple Challenges
- No
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- -
- Challenge ID Length
- -
- Digest Binding
- -
Uptime
- Discovery
- Reachable (216ms)
- Challenge
- Reachable (173ms)
- Last Checked
Schema Completeness
- Paid Operations
- 9
- With Input Schema
- 4
- With Description
- 9
5 missing schema
- GET /api/health
- GET /api/oauth/authorize
- GET /api/oauth/callback
- GET /api/user
- GET /api/designs/list
Documentation
- Homepage
- -
- API Reference
- -
- llms.txt
- -
Discovery
- OpenAPI URL
- https://stabledesign.vercel.app/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 1.0.0
- Document Size
- 10415 bytes
- Document Hash
- a1f14410cd348ab0fc86fce7b35ac97f7ac946373074a734e68cf24431ad97a9
Version History (1 snapshots)
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-05-06 | C | 67% | 551ms | Up |