{"openapi":"3.1.0","info":{"title":"DevHero agent API","version":"1.0.0","description":"DevHero lists currently open software and web development projects — public tenders, freelance projects and contract roles — with budget or rate (source currency and USD), deadline, place, project type and technologies, summarised from their official sources; headlines and summaries in English and, where translated, 19 more languages. Use search_projects / get_project / list_categories to read (free), request_contact to write to the team (free). Paid: unlock_project (client, official source link, reference, evidence), order_lead_pack, set_alerts — open an account with create_account (no human needed), top up with buy_credits (USDC via x402 on Base or Solana, Bitcoin Lightning, Stripe), then send the api_key as a Bearer token. Pay per call without an account: GET /agents/api/projects/{id}/unlock answers HTTP 402 (x402 / L402). Same tools as the MCP server at https://www.devhero.one/mcp and the A2A agent at https://www.devhero.one/a2a.","contact":{"email":"ag@brn.ai","url":"https://www.devhero.one/agents/"},"termsOfService":"https://www.devhero.one/legal/terms/"},"servers":[{"url":"https://www.devhero.one/agents/api"}],"components":{"schemas":{"search_projects_input":{"type":"object","properties":{"query":{"type":"string","description":"Free text: product, technology, sector, city, country …","maxLength":200},"kind":{"type":"string","enum":["all","tender","freelance","contract"],"default":"all","description":"tender = public procurement notice, freelance = project posted on a freelance board, contract = contract role with a rate"},"type":{"type":"string","enum":["web-app","portal","website","ecommerce","platform","mobile-app","cms","api-integration","data-ai","business-system","maintenance","dev-capacity","implementation","other"],"description":"Project type: web-app, portal, website, ecommerce, platform (incl. SaaS), mobile-app, cms, api-integration, data-ai, business-system (ERP/CRM/case management), maintenance (support and further development), dev-capacity (frameworks for developer capacity), implementation (software supply and implementation: supplier brings its product and implements/integrates it), other"},"technology":{"type":"string","maxLength":80,"description":"One technology, e.g. react, angular, .net, php, wordpress, sap, python; \"javascript\" = all projects naming JavaScript/TypeScript. See list_categories."},"js_only":{"type":"boolean","default":false,"description":"Only projects that name JavaScript/TypeScript (same as technology \"javascript\")"},"web_only":{"type":"boolean","default":false,"description":"Only web projects (JavaScript/TypeScript named, or a web project whose stack is not named)"},"sector":{"type":"string","enum":["government","health","education","transport","environment","finance","social","culture","commerce","energy","industry","justice","research","tech","other"]},"country":{"type":"string","description":"ISO 3166-1 alpha-2 code, e.g. DE, GB, US","maxLength":2},"region":{"type":"string","enum":["north-america","latin-america","europe","east-europe","mena","africa","south-asia","east-asia","southeast-asia","oceania","anywhere"]},"min_budget_usd":{"type":"number","minimum":0,"description":"Budget (upper value, in USD) at least this much; projects with only a rate are left out"},"max_budget_usd":{"type":"number","minimum":0,"description":"Budget (upper value, in USD) at most this much"},"min_rate_usd":{"type":"number","minimum":0,"description":"Hourly rate (upper value, USD per hour) at least this much; only projects with a stated rate"},"deadline_within_days":{"type":"integer","minimum":0,"maximum":3650,"description":"Deadline within this many days from today (projects without a deadline are left out)"},"sort":{"type":"string","enum":["budget","rate","newest","deadline"],"default":"budget"},"lang":{"type":"string","enum":["en","ar","zh","es","fr","de","pt","ru","ja","ko","it","tr","nl","pl","uk","hi","id","fa","ur","vi"],"description":"Language for headlines and summaries (default en). Where a translation is missing, English is returned; page URLs point to the site in that language."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"offset":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false},"get_project_input":{"type":"object","properties":{"id":{"type":"string","description":"Project id, e.g. DH-0123","pattern":"^[Dd][Hh]-?\\d{1,6}$"},"lang":{"type":"string","enum":["en","ar","zh","es","fr","de","pt","ru","ja","ko","it","tr","nl","pl","uk","hi","id","fa","ur","vi"],"description":"Language for headlines and summaries (default en). Where a translation is missing, English is returned; page URLs point to the site in that language."}},"required":["id"],"additionalProperties":false},"list_categories_input":{"type":"object","additionalProperties":false},"get_service_info_input":{"type":"object","additionalProperties":false},"create_account_input":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Optional: receipts, alerts, lead packs"},"name":{"type":"string","maxLength":120},"organization":{"type":"string","maxLength":160},"role":{"type":"string","enum":["agency","freelancer","client"],"default":"agency","description":"Who the account is for: agency, freelancer or client"},"accept_terms":{"type":"boolean","description":"Must be true: you accept the terms at /legal/terms/ on behalf of the person or company you act for"},"agent":{"type":"object","description":"Optional: who is calling, for our records.","properties":{"name":{"type":"string"},"url":{"type":"string"},"on_behalf_of":{"type":"string","description":"Person or company the agent acts for"}}}},"required":["accept_terms"],"additionalProperties":false},"get_account_input":{"type":"object","properties":{"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"additionalProperties":false},"buy_credits_input":{"type":"object","properties":{"pack":{"type":"string","description":"Pack id from get_service_info, e.g. c100"},"method":{"type":"string","enum":["x402","lightning","stripe_spt","saved_card","stripe_checkout"]},"currency":{"type":"string","enum":["usd","eur"],"description":"Card payments only (default usd). Crypto and Lightning are priced in USD."},"network":{"type":"string","description":"x402 only: base or solana (default: all enabled networks are offered)"},"shared_payment_token":{"type":"string","description":"stripe_spt only: the Stripe shared payment token (spt_…) your platform issued for this merchant","maxLength":200},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"required":["pack","method"],"additionalProperties":false},"confirm_payment_input":{"type":"object","properties":{"payment_hash":{"type":"string","maxLength":128},"checkout_session":{"type":"string","maxLength":200},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"additionalProperties":false},"unlock_project_input":{"type":"object","properties":{"id":{"type":"string","description":"Project id, e.g. DH-0123","pattern":"^[Dd][Hh]-?\\d{1,6}$"},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"required":["id"],"additionalProperties":false},"request_contact_input":{"type":"object","properties":{"target":{"type":"string","description":"Project id (DH-…) or \"general\"","pattern":"^([Dd][Hh]-?\\d{1,6}|[Gg][Ee][Nn][Ee][Rr][Aa][Ll])$"},"message":{"type":"string","maxLength":3000,"description":"What you want and who you (or your principal) are"},"contact":{"type":"object","description":"How the team can reply (optional if you send your api_key)","properties":{"email":{"type":"string","format":"email"},"whatsapp":{"type":"string","maxLength":40,"description":"Number with country code, e.g. +49 171 1234567"},"name":{"type":"string","maxLength":120},"organization":{"type":"string","maxLength":160}},"additionalProperties":false},"agent":{"type":"object","description":"Optional: who is calling, for our records.","properties":{"name":{"type":"string"},"url":{"type":"string"},"on_behalf_of":{"type":"string","description":"Person or company the agent acts for"}}},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"required":["target","message"],"additionalProperties":false},"order_lead_pack_input":{"type":"object","properties":{"type":{"type":"string","enum":["web-app","portal","website","ecommerce","platform","mobile-app","cms","api-integration","data-ai","business-system","maintenance","dev-capacity","implementation","other"],"description":"Project type: web-app, portal, website, ecommerce, platform (incl. SaaS), mobile-app, cms, api-integration, data-ai, business-system (ERP/CRM/case management), maintenance (support and further development), dev-capacity (frameworks for developer capacity), implementation (software supply and implementation: supplier brings its product and implements/integrates it), other"},"min_budget_usd":{"type":"number","minimum":0,"description":"Minimum budget in USD"},"region":{"type":"string","enum":["north-america","latin-america","europe","east-europe","mena","africa","south-asia","east-asia","southeast-asia","oceania","anywhere"]},"stack":{"type":"string","maxLength":300,"description":"Your stack, e.g. React, Node.js, TypeScript"},"notes":{"type":"string","maxLength":3000,"description":"About your team: size, past projects, languages, preferred clients"},"organization":{"type":"string","maxLength":160},"name":{"type":"string","maxLength":120},"idempotency_key":{"type":"string","maxLength":64},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"additionalProperties":false},"set_alerts_input":{"type":"object","properties":{"active":{"type":"boolean"},"types":{"type":"array","items":{"type":"string","enum":["web-app","portal","website","ecommerce","platform","mobile-app","cms","api-integration","data-ai","business-system","maintenance","dev-capacity","implementation","other"]},"maxItems":14,"description":"Project types (empty = all)"},"countries":{"type":"array","items":{"type":"string","maxLength":2},"maxItems":40,"description":"ISO alpha-2 codes (empty = all)"},"min_budget_usd":{"type":"number","minimum":0,"description":"Minimum budget in USD (0 = any)"},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"required":["active"],"additionalProperties":false},"get_request_status_input":{"type":"object","properties":{"request_id":{"type":"string","maxLength":40},"email":{"type":"string","format":"email"},"whatsapp":{"type":"string","maxLength":40},"api_key":{"type":"string","description":"Your API key from create_account (alternative to the Authorization: Bearer header)"}},"required":["request_id"],"additionalProperties":false}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"api_key from POST /accounts (prefix dhk_)"}}},"paths":{"/tools":{"get":{"operationId":"listTools","summary":"All tools with JSON input schemas","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/call":{"post":{"operationId":"callTool","summary":"Call any tool by name: {\"tool\": \"<name>\", \"arguments\": {…}}","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["search_projects","get_project","list_categories","get_service_info","create_account","get_account","buy_credits","confirm_payment","unlock_project","request_contact","order_lead_pack","set_alerts","get_request_status"]},"arguments":{"type":"object"}},"required":["tool"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/projects":{"get":{"operationId":"searchProjects","summary":"Search open projects (tenders, freelance projects, contract roles)","parameters":[{"name":"query","in":"query","required":false,"description":"Search words","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"all, tender, freelance, contract (or t, f, c)","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Project type","schema":{"type":"string","enum":["web-app","portal","website","ecommerce","platform","mobile-app","cms","api-integration","data-ai","business-system","maintenance","dev-capacity","implementation","other"]}},{"name":"technology","in":"query","required":false,"description":"One technology, e.g. react, .net, wordpress; \"javascript\" = all projects naming JavaScript/TypeScript (alias: tech)","schema":{"type":"string"}},{"name":"js_only","in":"query","required":false,"description":"Only projects naming JavaScript/TypeScript","schema":{"type":"boolean"}},{"name":"web_only","in":"query","required":false,"description":"Only web projects","schema":{"type":"boolean"}},{"name":"sector","in":"query","required":false,"description":"Sector","schema":{"type":"string","enum":["government","health","education","transport","environment","finance","social","culture","commerce","energy","industry","justice","research","tech","other"]}},{"name":"country","in":"query","required":false,"description":"ISO alpha-2","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Region","schema":{"type":"string","enum":["north-america","latin-america","europe","east-europe","mena","africa","south-asia","east-asia","southeast-asia","oceania","anywhere"]}},{"name":"min_budget_usd","in":"query","required":false,"description":"Minimum budget in USD (alias: minb)","schema":{"type":"number"}},{"name":"max_budget_usd","in":"query","required":false,"description":"Maximum budget in USD (alias: maxb)","schema":{"type":"number"}},{"name":"min_rate_usd","in":"query","required":false,"description":"Minimum hourly rate in USD (alias: rate)","schema":{"type":"number"}},{"name":"deadline_within_days","in":"query","required":false,"description":"Deadline within N days (alias: deadline)","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"budget (default), rate, newest, deadline","schema":{"type":"string","enum":["budget","rate","newest","deadline"]}},{"name":"limit","in":"query","required":false,"description":"Max results (1–50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}},{"name":"lang","in":"query","required":false,"description":"Language","schema":{"type":"string","enum":["en","ar","zh","es","fr","de","pt","ru","ja","ko","it","tr","nl","pl","uk","hi","id","fa","ur","vi"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/projects/{id}":{"get":{"operationId":"getProject","summary":"One project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"description":"Language","schema":{"type":"string","enum":["en","ar","zh","es","fr","de","pt","ru","ja","ko","it","tr","nl","pl","uk","hi","id","fa","ur","vi"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/projects/{id}/unlock":{"get":{"operationId":"unlockProject","summary":"Client, source link, reference and evidence of one project. With a Bearer api_key: credits. Without: HTTP 402 — pay with x402 (X-PAYMENT / PAYMENT-SIGNATURE header) or L402 (Authorization: L402 <token>:<preimage>), then repeat the request.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}},"post":{"operationId":"unlockProjectPost","summary":"Same as GET","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/categories":{"get":{"operationId":"listCategories","summary":"Kinds, project types, technologies, sectors, regions, countries with counts","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/service":{"get":{"operationId":"getServiceInfo","summary":"Prices, packs and payment methods","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/accounts":{"post":{"operationId":"createAccount","summary":"Open an account; returns api_key","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/create_account_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/account":{"get":{"operationId":"getAccount","summary":"Balance and history","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}},"security":[{"bearer":[]}]}},"/credits/buy":{"post":{"operationId":"buyCredits","summary":"Buy a credit pack (x402, lightning, stripe_spt, saved_card, stripe_checkout)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/buy_credits_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}},"security":[{"bearer":[]}]}},"/credits/topup":{"post":{"operationId":"topUpCredits","summary":"Top up a credit pack by HTTP 402: x402 (USDC on Base/Solana: PAYMENT-SIGNATURE or X-PAYMENT), L402 (Authorization: L402 <macaroon>:<preimage>) or MPP (Authorization: Payment …). Send your api_key in X-API-Key. Query: pack=c100","parameters":[{"name":"pack","in":"query","required":false,"description":"Pack id","schema":{"type":"string"}},{"name":"network","in":"query","required":false,"description":"x402 only: base or solana","schema":{"type":"string"}}],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/credits/confirm":{"post":{"operationId":"confirmPayment","summary":"Confirm a Lightning or Stripe checkout payment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/confirm_payment_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}},"security":[{"bearer":[]}]}},"/contact":{"post":{"operationId":"requestContact","summary":"Free message to the DevHero team about a project or in general","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/request_contact_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}},"/orders/lead-pack":{"post":{"operationId":"orderLeadPack","summary":"Paid curated lead pack","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/order_lead_pack_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}},"security":[{"bearer":[]}]}},"/alerts":{"post":{"operationId":"setAlerts","summary":"Weekly e-mail alerts","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/set_alerts_input"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}},"security":[{"bearer":[]}]}},"/requests/{id}":{"get":{"operationId":"getRequestStatus","summary":"Status of a contact request (DHC-…, with ?email= or ?whatsapp=, or your api_key) or an order (with api_key)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":false,"description":"E-mail used in the request","schema":{"type":"string"}},{"name":"whatsapp","in":"query","required":false,"description":"WhatsApp number used in the request","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"API key missing or invalid"},"402":{"description":"Payment required (x402 / L402 / credits)"},"404":{"description":"Not found"},"429":{"description":"Rate limit"}}}}}}