openapi: 3.2.0 info: title: CONNSKILL Growth Services EU LLM API version: 3.0.0 description: 'Search research for AI agents: Local Market Check packages, domain ranking snapshots and keyword demand data.' termsOfService: https://agent.connskill.com/pricing contact: email: info@connskill.com x-logo: url: https://agent.connskill.com/icon.png altText: CONNSKILL logo: https://agent.connskill.com/icon.png icon: https://agent.connskill.com/icon.png x-guidance: Read the free discovery, input and quote routes first. Paid operations return an x402 challenge carrying the exact amount, asset, network and recipient. Prices can vary with selected tier, inputs or usage; use the actual challenge before approving payment. Support is free and uses a separate wallet ownership signature. Preserve the original request and payment proof for redelivery; never pay again for an unresolved purchase. x-trust: operator: CONNSKILL GmbH & Co. KG jurisdiction: Germany (EU) contact: info@connskill.com auth: No account or API key. Manual first purchases and private redelivery require a free Sign-In-With-X wallet proof from POST /v1/payments/challenge. payment: x402 v2, USDC on Base (eip155:8453), pay-per-call to 0x43B85AE58f0A2505c710Bc715d6f3EB16b1f63dE idempotency: A fresh wallet proof bound to the exact original request and payment references can retrieve its retained private result without another payment. redelivery: Private redelivery only reads a retained result. A missing result or uncertain purchase remains held for wallet support; it never starts another provider order. refund: On-chain settlement is technically final. This does not exclude statutory claims. Invalid input is rejected before settlement; failed delivery must be resolved through the delivery policy and support. unclearState: If a purchase times out and we cannot tell whether the provider charged us, you get HTTP 504 with stateUnclear — so you never blindly re-order. timeouts: No uptime SLA. Every outbound call has a timeout (provider 20s, DataForSEO 45s, purchase 60s); the gateway hard-caps at 90s and returns 504 rather than hanging. rateLimit: Paid service calls have no per-caller rate limit. Wallet challenges have bounded capacity and can return 429. Request size limits apply. We never log your IP; only technical metadata such as User-Agent and Referer. discovery: https://agent.connskill.com/openapi.json · https://agent.connskill.com/.well-known/x402 · https://agent.connskill.com/llms.txt · https://agent.connskill.com/pricing tags: - name: EU-LLM paths: /ai/v1/eu-llm-info: get: operationId: euLlmInfo summary: Models, limits and data-handling policy of the EU inference lane (free) tags: - EU-LLM security: [] responses: '200': description: Lane description with dated metadata for the currently offered text services content: application/json: schema: type: object required: - modelMetadata properties: modelMetadata: type: object properties: scope: type: string semantics: type: string factorSource: type: object properties: url: type: string observedAt: type: string format: date-time models: type: array items: type: object properties: id: type: string service: type: string inputModalities: type: array items: type: string outputModalities: type: array items: type: string toolCalling: type: boolean providerLabel: type: string tokenFactor: type: number exclusiveMinimum: 0 required: - id - service - inputModalities - outputModalities - toolCalling - providerLabel - tokenFactor required: - scope - semantics - factorSource - models example: modelMetadata: scope: enabled_text_services semantics: Dated provider quota factors, not prices, guaranteed inference, or a verified billing/rounding contract. Existing usage accounting is unchanged. factorSource: url: https://api.mittwald.de/v2/ai-hosting-models observedAt: '2026-09-09T14:49:34.408546+00:00' models: - id: gpt-oss-120b service: chat inputModalities: - text outputModalities: - text toolCalling: true providerLabel: lts tokenFactor: 1 - id: Qwen3.6-35B-A3B-FP8 service: chat inputModalities: - text outputModalities: - text toolCalling: true providerLabel: stable tokenFactor: 1 - id: Ministral-3-14B-Instruct-2512 service: chat inputModalities: - text outputModalities: - text toolCalling: true providerLabel: lts tokenFactor: 1 - id: Qwen3-Embedding-8B service: embeddings inputModalities: - text outputModalities: - vector toolCalling: false providerLabel: lts tokenFactor: 0.5 /ai/v1/eu-chat: post: operationId: euChat summary: LLM chat completion hosted in Germany (no training on inputs; content excluded… tags: - EU-LLM x-payment-info: price: mode: dynamic currency: USD min: '0.005000' max: '0.080000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - messages description: Unknown top-level fields are ignored and are neither priced nor sent to the provider. properties: messages: type: array minItems: 1 maxItems: 64 description: OpenAI-style chat messages [{role, content}] model: type: string enum: - gpt-oss-120b - Qwen3.6-35B-A3B-FP8 - Ministral-3-14B-Instruct-2512 default: gpt-oss-120b max_tokens: type: integer minimum: 256 default: 1024 maximum: 2048 temperature: type: number minimum: 0 maximum: 2 tools: type: array maxItems: 32 description: OpenAI-style tool definitions [{type:"function", function:{name, description, parameters}}] tool_choice: description: '"auto" | "none" | "required" | {type:"function", function:{name}}' response_format: type: object description: e.g. {type:"json_object"} top_p: type: number minimum: 0 maximum: 1 stop: type: array items: type: string maxItems: 4 seed: type: integer responses: '200': description: Completion + usage content: application/json: schema: type: object properties: status: type: string model: type: string message: type: string usage: type: object properties: prompt_tokens: type: integer completion_tokens: type: integer example: status: delivered model: gpt-oss-120b message: GDPR Article 6 lists six lawful bases for processing … usage: prompt_tokens: 214 completion_tokens: 380 '402': description: Payment required. An empty unpaid request returns catalogue metadata at the base price; submit valid input without payment to obtain the request-specific quote before signing. /ai/v1/eu-embed: post: operationId: euEmbed summary: Text embeddings processed in Germany; temporary redelivery cache (paid) tags: - EU-LLM x-payment-info: price: mode: fixed currency: USD amount: '0.005000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - input properties: input: description: String or array of up to 64 strings, at most 8192 UTF-8 input bytes in total type: - string - array responses: '200': description: Embeddings content: application/json: schema: type: object properties: status: type: string model: type: string dimensions: type: integer count: type: integer example: status: delivered model: Qwen3-Embedding-8B dimensions: 4096 count: 2 '402': description: Payment required. An empty unpaid request returns catalogue metadata; valid input is required before payment or execution. components: securitySchemes: signInWithX: type: apiKey in: header name: Sign-In-With-X description: Base64 JSON containing the exact challenge fields, checksummed address, chainId eip155:8453, type eip191 and EIP-191 signature. Free authentication, not payment. One use, five minutes, bound to method, path and JSON body. x-discovery: ownershipProofs: - '0x4b92ee6ef3357beddfb6b0d39fbe8be660a934bde8a226539a16a0ea414768394cdc20d14f025c6bf5a630e99eafe177a742d81b4c16d2933cd1c2f85e708cbb1b' support: title: Wallet support url: /v1/support/policy authentication: sign-in-with-x network: eip155:8453 paid: false description: Free, private support for settled purchases. A short-lived wallet signature proves ownership; never pay again merely to open a case. endpoints: - url: /v1/support/policy method: GET - url: /v1/support/challenge method: POST - url: /v1/support/tickets method: GET - url: /v1/support/tickets method: POST - url: /v1/support/tickets/{ticketId} method: GET - url: /v1/support/tickets/{ticketId}/checkout method: POST - url: /v1/support/tickets/{ticketId}/discount method: POST serviceSearch: endpoint: /v1/service-search method: GET requiresPayment: false querySentToSources: false exhaustiveMarket: false sources: - connskill-directory - cdp-bazaar description: Free local search of bounded cached catalogues. Source coverage, age and failures are explicit; unknown units are not price-ranked. x-support: title: Wallet support url: /v1/support/policy authentication: sign-in-with-x network: eip155:8453 paid: false description: Free, private support for settled purchases. A short-lived wallet signature proves ownership; never pay again merely to open a case. endpoints: - url: /v1/support/policy method: GET - url: /v1/support/challenge method: POST - url: /v1/support/tickets method: GET - url: /v1/support/tickets method: POST - url: /v1/support/tickets/{ticketId} method: GET - url: /v1/support/tickets/{ticketId}/checkout method: POST - url: /v1/support/tickets/{ticketId}/discount method: POST