Skip to content
Free static example · no wallet required

OpenAPI pytest generator

Inspect the exact response envelope first. When you need current analysis for your own input, one successful x402 call costs $0.1 USDC on Base or Solana.

No accountNo subscriptionExact USDC priceFresh calls only are paid
Runnable artifact

test_openapi_generated.py

This fixed demonstration file is extracted directly from the response below. Review it free; a paid call generates a fresh module from your own OpenAPI document.

"""Generated API smoke tests. Review targets and payloads before running."""

import os

import pytest
import requests

DEFAULT_BASE_URL = 'https://api.example.com'
BASE_URL = os.environ.get("API_BASE_URL", DEFAULT_BASE_URL).rstrip("/")
TIMEOUT_SECONDS = 20


def _require_base_url():
    if not BASE_URL:
        pytest.skip("Set API_BASE_URL to the API origin")
    return BASE_URL


def _headers(extra=None):
    headers = dict(extra or {})
    if token := os.environ.get('API_BEARER_TOKEN'):
        headers["Authorization"] = f"Bearer {token}"
    if api_key := os.environ.get('API_KEY'):
        headers["X-API-Key"] = api_key
    return headers


def test_gethealth():
    base_url = _require_base_url()
    response = requests.request('GET', base_url + '/health', headers=_headers({}), timeout=TIMEOUT_SECONDS)
    assert response.status_code in [200]

@pytest.mark.skipif(
    os.environ.get("API_ALLOW_MUTATING_TESTS") != "1",
    reason="POST test disabled; set API_ALLOW_MUTATING_TESTS=1",
)
def test_createwidget():
    base_url = _require_base_url()
    response = requests.request('POST', base_url + '/widgets', headers=_headers({}), json={'name': 'Acre'}, timeout=TIMEOUT_SECONDS)
    assert response.status_code in [201]
Full response envelope

What you receive

Demonstration data only. The paid endpoint returns a fresh result and settlement receipt.

{
  "request_id": "018f1f54-7f38-7ba2-8dc3-5f90272d9f1a",
  "service": "developer.openapi-test-generate",
  "version": "1",
  "data": {
    "documentSha256": "2f27879b24323466c5dbca7df9bf137561b826bd43c318b8642b92f04b17930d",
    "openapiVersion": "3.1.0",
    "apiTitle": "Widget API",
    "baseUrlDefault": "https://api.example.com",
    "operationCount": 2,
    "generatedTestCount": 2,
    "guardedMutationCount": 1,
    "truncated": false,
    "sourceFileName": "test_openapi_generated.py",
    "sourceSha256": "44d05573bd64ef63deb934c9bef7b1ed6c618e4093c9cc7eee8e3a55b12b0f26",
    "source": "\"\"\"Generated API smoke tests. Review targets and payloads before running.\"\"\"\n\nimport os\n\nimport pytest\nimport requests\n\nDEFAULT_BASE_URL = 'https://api.example.com'\nBASE_URL = os.environ.get(\"API_BASE_URL\", DEFAULT_BASE_URL).rstrip(\"/\")\nTIMEOUT_SECONDS = 20\n\n\ndef _require_base_url():\n    if not BASE_URL:\n        pytest.skip(\"Set API_BASE_URL to the API origin\")\n    return BASE_URL\n\n\ndef _headers(extra=None):\n    headers = dict(extra or {})\n    if token := os.environ.get('API_BEARER_TOKEN'):\n        headers[\"Authorization\"] = f\"Bearer {token}\"\n    if api_key := os.environ.get('API_KEY'):\n        headers[\"X-API-Key\"] = api_key\n    return headers\n\n\ndef test_gethealth():\n    base_url = _require_base_url()\n    response = requests.request('GET', base_url + '/health', headers=_headers({}), timeout=TIMEOUT_SECONDS)\n    assert response.status_code in [200]\n\[email protected](\n    os.environ.get(\"API_ALLOW_MUTATING_TESTS\") != \"1\",\n    reason=\"POST test disabled; set API_ALLOW_MUTATING_TESTS=1\",\n)\ndef test_createwidget():\n    base_url = _require_base_url()\n    response = requests.request('POST', base_url + '/widgets', headers=_headers({}), json={'name': 'Acre'}, timeout=TIMEOUT_SECONDS)\n    assert response.status_code in [201]\n",
    "operations": [
      {
        "operationId": "getHealth",
        "testName": "test_gethealth",
        "method": "GET",
        "path": "/health",
        "mutatingGuard": false,
        "documentedResponses": [
          "200"
        ]
      },
      {
        "operationId": "createWidget",
        "testName": "test_createwidget",
        "method": "POST",
        "path": "/widgets",
        "mutatingGuard": true,
        "documentedResponses": [
          "201"
        ]
      }
    ],
    "requirements": [
      "pytest>=8",
      "requests>=2.31"
    ],
    "environment": {
      "baseUrl": "API_BASE_URL",
      "bearerToken": "API_BEARER_TOKEN",
      "apiKey": "API_KEY",
      "allowMutatingTests": "API_ALLOW_MUTATING_TESTS"
    },
    "warnings": [],
    "execution": {
      "sourceSyntaxValidated": true,
      "generatedTestsExecuted": false,
      "networkRequestsMade": false
    }
  },
  "meta": {
    "duration_ms": 42,
    "cached": false,
    "sources": [],
    "warnings": [],
    "next_actions": [
      {
        "service": "developer.code-metrics",
        "title": "Code metrics",
        "reason": "Measure the generated pytest module's structure, complexity, syntax status, and maintainability signals before adding it to a test suite.",
        "method": "POST",
        "path": "/v1/developer/code-metrics",
        "price": "$0.025",
        "input_template": {
          "code": "$result.data.source",
          "language": "python"
        },
        "use_output": "Require result.data.source.sha256 to equal the generator's result.data.sourceSha256, then inspect syntax and reviewSignals before retaining the generated module.",
        "handoff_path": "/catalog/developer.code-metrics",
        "checkout_path": "/try/developer.code-metrics",
        "sample_path": "/samples/developer.code-metrics",
        "maximum_atomic_usdc": "25000",
        "handoff_payment_required": false,
        "executes_automatically": false,
        "authorization_required": true
      }
    ]
  }
}
Example request

Input JSON

{
  "document": "{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Widget API\",\"version\":\"1\"},\"servers\":[{\"url\":\"https://api.example.com\"}],\"paths\":{\"/health\":{\"get\":{\"operationId\":\"getHealth\",\"responses\":{\"200\":{\"description\":\"Healthy\"}}}},\"/widgets\":{\"post\":{\"operationId\":\"createWidget\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Acre\"}}}}}},\"responses\":{\"201\":{\"description\":\"Created\"}}}}}}",
  "format": "json",
  "max_operations": 25,
  "include_optional": false,
  "timeout_seconds": 20
}
Delivery contract

One paid POST

Generate deterministic, syntax-validated pytest and requests smoke tests from a caller-supplied OpenAPI 3 document, with mutating operations disabled by default.

POST /v1/developer/openapi-test-generate

Inspect validation rules and output schema

Need current data?

Run this exact service.

The checkout verifies the request, selected network, USDC asset, recipient, and price before opening a wallet.

Continue · $0.1 USDC