GET /openapi.json?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Content-Type: application/json
Expires: Sat, 27 Jun 2026 01:49:23 GMT
Vary: Accept

{
    "openapi": "3.1.0",
    "info": {
        "title": "SiteShot Agent API",
        "version": "1.0.0",
        "description": "ChatGPT Actions-ready API for SiteShot plan discovery, email-gated signup, usage status, subscription checkout, and explicit screenshot API key reveal."
    },
    "servers": [
        {
            "url": "https://www.site-shot.com"
        }
    ],
    "paths": {
        "/api/v1/agent/plans/": {
            "get": {
                "operationId": "listPlans",
                "summary": "List public SiteShot subscription plans",
                "responses": {
                    "200": {
                        "description": "Public plans"
                    }
                }
            }
        },
        "/api/v1/agent/signup/": {
            "post": {
                "operationId": "startEmailGatedSignup",
                "summary": "Create an inactive account and send a setup email",
                "x-openai-isConsequential": true,
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentSignupRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Setup email queued"
                    }
                }
            }
        },
        "/api/v1/agent/profile/": {
            "get": {
                "operationId": "getProfile",
                "summary": "Read the authorized SiteShot account profile without exposing the full API key",
                "security": [
                    {
                        "SiteShotOAuth": [
                            "account:read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Account profile"
                    }
                }
            }
        },
        "/api/v1/agent/usage/": {
            "get": {
                "operationId": "getUsageSummary",
                "summary": "Read current screenshot quota and usage summary",
                "security": [
                    {
                        "SiteShotOAuth": [
                            "usage:read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Usage summary"
                    }
                }
            }
        },
        "/api/v1/agent/subscription/": {
            "get": {
                "operationId": "getSubscriptionStatus",
                "summary": "Read active subscription status",
                "security": [
                    {
                        "SiteShotOAuth": [
                            "account:read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subscription status"
                    }
                }
            }
        },
        "/api/v1/agent/checkout-sessions/": {
            "post": {
                "operationId": "createCheckoutSession",
                "summary": "Create a Stripe Checkout Session for a public tariff",
                "x-openai-isConsequential": true,
                "security": [
                    {
                        "SiteShotOAuth": [
                            "billing:checkout"
                        ]
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CheckoutSessionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Checkout URL created"
                    }
                }
            }
        },
        "/api/v1/agent/reveal-api-key/": {
            "post": {
                "operationId": "revealApiKey",
                "summary": "Explicitly reveal the full screenshot API key and create an audit log entry",
                "x-openai-isConsequential": true,
                "security": [
                    {
                        "SiteShotOAuth": [
                            "api_key:read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API key revealed with warning"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "SiteShotOAuth": {
                "type": "oauth2",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://www.site-shot.com/o/authorize/",
                        "tokenUrl": "https://www.site-shot.com/o/token/",
                        "scopes": {
                            "account:read": "Read account profile and subscription status.",
                            "usage:read": "Read screenshot usage and quota summary.",
                            "billing:checkout": "Create Stripe Checkout sessions.",
                            "api_key:read": "Reveal the full screenshot API key after explicit authorization."
                        }
                    }
                }
            }
        },
        "schemas": {
            "AgentSignupRequest": {
                "type": "object",
                "required": [
                    "email",
                    "first_name",
                    "last_name"
                ],
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "first_name": {
                        "type": "string",
                        "maxLength": 30
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 30
                    }
                }
            },
            "CheckoutSessionRequest": {
                "type": "object",
                "required": [
                    "tariff_id"
                ],
                "properties": {
                    "tariff_id": {
                        "type": "integer",
                        "minimum": 1
                    }
                }
            }
        }
    }
}