# Send Api Gateway 1 to your agent
Use the source page and any available docs to guide the install because the item is currently unstable or timing out.
## Fast path
- Open the source page via Review source status.
- If you can obtain the package, extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the source page and extracted files.
## Suggested prompts
### New install

```text
I tried to install a skill package from Yavira, but the item is currently unstable or timing out. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.
```
### Upgrade existing

```text
I tried to upgrade a skill package from Yavira, but the item is currently unstable or timing out. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "api-gateway-1",
    "name": "Api Gateway 1",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/kdegeek/api-gateway-1",
    "canonicalUrl": "https://clawhub.ai/kdegeek/api-gateway-1",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/api-gateway-1",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=api-gateway-1",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "LICENSE.txt",
      "SKILL.md",
      "_meta.json",
      "references/active-campaign.md",
      "references/acuity-scheduling.md",
      "references/airtable.md"
    ],
    "downloadMode": "manual_only",
    "sourceHealth": {
      "source": "tencent",
      "slug": "api-gateway-1",
      "status": "unstable",
      "reason": "timeout",
      "recommendedAction": "retry_later",
      "checkedAt": "2026-04-29T03:22:59.473Z",
      "expiresAt": "2026-04-29T15:22:59.473Z",
      "httpStatus": null,
      "finalUrl": null,
      "contentType": null,
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=api-gateway-1",
        "error": "Timed out after 5000ms",
        "slug": "api-gateway-1"
      },
      "scope": "item",
      "summary": "Item is unstable.",
      "detail": "This item is timing out or returning errors right now. Review the source page and try again later.",
      "primaryActionLabel": "Review source status",
      "primaryActionHref": "https://clawhub.ai/kdegeek/api-gateway-1"
    },
    "validation": {
      "installChecklist": [
        "Wait for the source to recover or retry later.",
        "Review SKILL.md only after the download returns a real package.",
        "Treat this source as transient until the upstream errors clear."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/api-gateway-1",
    "downloadUrl": "https://openagent3.xyz/downloads/api-gateway-1",
    "agentUrl": "https://openagent3.xyz/skills/api-gateway-1/agent",
    "manifestUrl": "https://openagent3.xyz/skills/api-gateway-1/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/api-gateway-1/agent.md"
  }
}
```
## Documentation

### API Gateway

Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.

### Quick Start

# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Base URL

https://gateway.maton.ai/{app}/{native-api-path}

Replace {app} with the service name and {native-api-path} with the actual API endpoint path.

IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.

### Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

The API gateway automatically injects the appropriate OAuth token for the target service.

Environment Variable: You can set your API key as the MATON_API_KEY environment variable:

export MATON_API_KEY="YOUR_API_KEY"

### Getting Your API Key

Sign in or create an account at maton.ai
Go to maton.ai/settings
Click the copy button on the right side of API Key section to copy it

### Connection Management

Connection management uses a separate base URL: https://ctrl.maton.ai

### List Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Query Parameters (optional):

app - Filter by service name (e.g., slack, hubspot, salesforce)
status - Filter by connection status (ACTIVE, PENDING, FAILED)

Response:

{
  "connections": [
    {
      "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
      "status": "ACTIVE",
      "creation_time": "2025-12-08T07:20:53.488460Z",
      "last_updated_time": "2026-01-31T20:03:32.593153Z",
      "url": "https://connect.maton.ai/?session_token=5e9...",
      "app": "slack",
      "metadata": {}
    }
  ]
}

### Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection": {
    "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=5e9...",
    "app": "slack",
    "metadata": {}
  }
}

Open the returned URL in a browser to complete OAuth.

### Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Specifying Connection

If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection for that app.

### Supported Services

ServiceApp NameBase URL ProxiedActiveCampaignactive-campaign{account}.api-us1.comAcuity Schedulingacuity-schedulingacuityscheduling.comAirtableairtableapi.airtable.comApolloapolloapi.apollo.ioAsanaasanaapp.asana.comAttioattioapi.attio.comBasecampbasecamp3.basecampapi.combeehiivbeehiivapi.beehiiv.comBoxboxapi.box.comBrevobrevoapi.brevo.comCalendlycalendlyapi.calendly.comCal.comcal-comapi.cal.comCallRailcallrailapi.callrail.comChargebeechargebee{subdomain}.chargebee.comClickFunnelsclickfunnels{subdomain}.myclickfunnels.comClickSendclicksendrest.clicksend.comClickUpclickupapi.clickup.comClockifyclockifyapi.clockify.meCodacodacoda.ioConfluenceconfluenceapi.atlassian.comCompanyCamcompanycamapi.companycam.comCognito Formscognito-formswww.cognitoforms.comConstant Contactconstant-contactapi.cc.emailDropboxdropboxapi.dropboxapi.comDropbox Businessdropbox-businessapi.dropboxapi.comElevenLabselevenlabsapi.elevenlabs.ioEventbriteeventbritewww.eventbriteapi.comFathomfathomapi.fathom.aiFirebasefirebasefirebase.googleapis.comFirefliesfirefliesapi.fireflies.aiGetResponsegetresponseapi.getresponse.comGitHubgithubapi.github.comGumroadgumroadapi.gumroad.comGoogle Adsgoogle-adsgoogleads.googleapis.comGoogle BigQuerygoogle-bigquerybigquery.googleapis.comGoogle Analytics Admingoogle-analytics-adminanalyticsadmin.googleapis.comGoogle Analytics Datagoogle-analytics-dataanalyticsdata.googleapis.comGoogle Calendargoogle-calendarwww.googleapis.comGoogle Classroomgoogle-classroomclassroom.googleapis.comGoogle Contactsgoogle-contactspeople.googleapis.comGoogle Docsgoogle-docsdocs.googleapis.comGoogle Drivegoogle-drivewww.googleapis.comGoogle Formsgoogle-formsforms.googleapis.comGmailgoogle-mailgmail.googleapis.comGoogle Merchantgoogle-merchantmerchantapi.googleapis.comGoogle Meetgoogle-meetmeet.googleapis.comGoogle Playgoogle-playandroidpublisher.googleapis.comGoogle Search Consolegoogle-search-consolewww.googleapis.comGoogle Sheetsgoogle-sheetssheets.googleapis.comGoogle Slidesgoogle-slidesslides.googleapis.comGoogle Tasksgoogle-taskstasks.googleapis.comGoogle Workspace Admingoogle-workspace-adminadmin.googleapis.comHubSpothubspotapi.hubapi.comInstantlyinstantlyapi.instantly.aiJirajiraapi.atlassian.comJobberjobberapi.getjobber.comJotFormjotformapi.jotform.comKeapkeapapi.infusionsoft.comKitkitapi.kit.comKlaviyoklaviyoa.klaviyo.comLemlistlemlistapi.lemlist.comLinearlinearapi.linear.appLinkedInlinkedinapi.linkedin.comMailchimpmailchimp{dc}.api.mailchimp.comMailerLitemailerliteconnect.mailerlite.comMailgunmailgunapi.mailgun.netManyChatmanychatapi.manychat.comMicrosoft Excelmicrosoft-excelgraph.microsoft.comMicrosoft Teamsmicrosoft-teamsgraph.microsoft.comMicrosoft To Domicrosoft-to-dograph.microsoft.comMonday.commondayapi.monday.comMotionmotionapi.usemotion.comNetlifynetlifyapi.netlify.comNotionnotionapi.notion.comOneDriveone-drivegraph.microsoft.comOutlookoutlookgraph.microsoft.comPDF.copdf-coapi.pdf.coPipedrivepipedriveapi.pipedrive.comPodiopodioapi.podio.comQuickBooksquickbooksquickbooks.api.intuit.comQuoquoapi.openphone.comSalesforcesalesforce{instance}.salesforce.comSignNowsignnowapi.signnow.comSlackslackslack.comSnapchatsnapchatadsapi.snapchat.comSquaresquareupconnect.squareup.comStripestripeapi.stripe.comSysteme.iosystemeapi.systeme.ioTallytallyapi.tally.soTelegramtelegramapi.telegram.orgTickTickticktickapi.ticktick.comTodoisttodoistapi.todoist.comToggl Tracktoggl-trackapi.track.toggl.comTrellotrelloapi.trello.comTwiliotwilioapi.twilio.comTypeformtypeformapi.typeform.comVimeovimeoapi.vimeo.comWhatsApp Businesswhatsapp-businessgraph.facebook.comWooCommercewoocommerce{store-url}/wp-json/wc/v3WordPress.comwordpresspublic-api.wordpress.comXeroxeroapi.xero.comYouTubeyoutubewww.googleapis.comZoho Biginzoho-biginwww.zohoapis.comZoho Bookingszoho-bookingswww.zohoapis.comZoho Bookszoho-bookswww.zohoapis.comZoho Calendarzoho-calendarcalendar.zoho.comZoho CRMzoho-crmwww.zohoapis.comZoho Inventoryzoho-inventorywww.zohoapis.comZoho Mailzoho-mailmail.zoho.comZoho Peoplezoho-peoplepeople.zoho.comZoho Recruitzoho-recruitrecruit.zoho.com

See references/ for detailed routing guides per provider:

ActiveCampaign - Contacts, deals, tags, lists, automations, campaigns
Acuity Scheduling - Appointments, calendars, clients, availability
Airtable - Records, bases, tables
Apollo - People search, enrichment, contacts
Asana - Tasks, projects, workspaces, webhooks
Attio - People, companies, records, tasks
Basecamp - Projects, to-dos, messages, schedules, documents
beehiiv - Publications, subscriptions, posts, custom fields
Box - Files, folders, collaborations, shared links
Brevo - Contacts, email campaigns, transactional emails, templates
Calendly - Event types, scheduled events, availability, webhooks
Cal.com - Event types, bookings, schedules, availability slots, webhooks
CallRail - Calls, trackers, companies, tags, analytics
Chargebee - Subscriptions, customers, invoices
ClickFunnels - Contacts, products, orders, courses, webhooks
ClickSend - SMS, MMS, voice messages, contacts, lists
ClickUp - Tasks, lists, folders, spaces, webhooks
Clockify - Time tracking, projects, clients, tasks, workspaces
Coda - Docs, pages, tables, rows, formulas, controls
Confluence - Pages, spaces, blogposts, comments, attachments
CompanyCam - Projects, photos, users, tags, groups, documents
Cognito Forms - Forms, entries, documents, files
Constant Contact - Contacts, email campaigns, lists, segments
Dropbox - Files, folders, search, metadata, revisions, tags
Dropbox Business - Team members, groups, team folders, devices, audit logs
ElevenLabs - Text-to-speech, voice cloning, sound effects, audio processing
Eventbrite - Events, venues, tickets, orders, attendees
Fathom - Meeting recordings, transcripts, summaries, webhooks
Firebase - Projects, web apps, Android apps, iOS apps, configurations
Fireflies - Meeting transcripts, summaries, AskFred AI, channels
GetResponse - Campaigns, contacts, newsletters, autoresponders, tags, segments
GitHub - Repositories, issues, pull requests, commits
Gumroad - Products, sales, subscribers, licenses, webhooks
Google Ads - Campaigns, ad groups, GAQL queries
Google Analytics Admin - Reports, dimensions, metrics
Google Analytics Data - Reports, dimensions, metrics
Google BigQuery - Datasets, tables, jobs, SQL queries
Google Calendar - Events, calendars, free/busy
Google Classroom - Courses, coursework, students, teachers, announcements
Google Contacts - Contacts, contact groups, people search
Google Docs - Document creation, batch updates
Google Drive - Files, folders, permissions
Google Forms - Forms, questions, responses
Gmail - Messages, threads, labels
Google Meet - Spaces, conference records, participants
Google Merchant - Products, inventories, promotions, reports
Google Play - In-app products, subscriptions, reviews
Google Search Console - Search analytics, sitemaps
Google Sheets - Values, ranges, formatting
Google Slides - Presentations, slides, formatting
Google Tasks - Task lists, tasks, subtasks
Google Workspace Admin - Users, groups, org units, domains, roles
HubSpot - Contacts, companies, deals
Instantly - Campaigns, leads, accounts, email outreach
Jira - Issues, projects, JQL queries
Jobber - Clients, jobs, invoices, quotes (GraphQL)
JotForm - Forms, submissions, webhooks
Keap - Contacts, companies, tags, tasks, opportunities, campaigns
Kit - Subscribers, tags, forms, sequences, broadcasts
Klaviyo - Profiles, lists, campaigns, flows, events
Lemlist - Campaigns, leads, activities, schedules, unsubscribes
Linear - Issues, projects, teams, cycles (GraphQL)
LinkedIn - Profile, posts, shares, media uploads
Mailchimp - Audiences, campaigns, templates, automations
MailerLite - Subscribers, groups, campaigns, automations, forms
Mailgun - Email sending, domains, routes, templates, mailing lists, suppressions
ManyChat - Subscribers, tags, flows, messaging
Microsoft Excel - Workbooks, worksheets, ranges, tables, charts
Microsoft Teams - Teams, channels, messages, members, chats
Microsoft To Do - Task lists, tasks, checklist items, linked resources
Monday.com - Boards, items, columns, groups (GraphQL)
Motion - Tasks, projects, workspaces, schedules
Netlify - Sites, deploys, builds, DNS, environment variables
Notion - Pages, databases, blocks
OneDrive - Files, folders, drives, sharing
Outlook - Mail, calendar, contacts
PDF.co - PDF conversion, merge, split, edit, text extraction, barcodes
Pipedrive - Deals, persons, organizations, activities
Podio - Organizations, workspaces, apps, items, tasks, comments
QuickBooks - Customers, invoices, reports
Quo - Calls, messages, contacts, conversations, webhooks
Salesforce - SOQL, sObjects, CRUD
SignNow - Documents, templates, invites, e-signatures
SendGrid - Email sending, contacts, templates, suppressions, statistics
Slack - Messages, channels, users
Snapchat - Ad accounts, campaigns, ad squads, ads, creatives, audiences
Square - Payments, customers, orders, catalog, inventory, invoices
Stripe - Customers, subscriptions, payments
Systeme.io - Contacts, tags, courses, communities, webhooks
Tally - Forms, submissions, workspaces, webhooks
Telegram - Messages, chats, bots, updates, polls
TickTick - Tasks, projects, task lists
Todoist - Tasks, projects, sections, labels, comments
Toggl Track - Time entries, projects, clients, tags, workspaces
Trello - Boards, lists, cards, checklists
Twilio - SMS, voice calls, phone numbers, messaging
Typeform - Forms, responses, insights
Vimeo - Videos, folders, albums, comments, likes
WhatsApp Business - Messages, templates, media
WooCommerce - Products, orders, customers, coupons
WordPress.com - Posts, pages, sites, users, settings
Xero - Contacts, invoices, reports
YouTube - Videos, playlists, channels, subscriptions
Zoho Bigin - Contacts, companies, pipelines, products
Zoho Bookings - Appointments, services, staff, workspaces
Zoho Books - Invoices, contacts, bills, expenses
Zoho Calendar - Calendars, events, attendees, reminders
Zoho CRM - Leads, contacts, accounts, deals, search
Zoho Inventory - Items, sales orders, invoices, purchase orders, bills
Zoho Mail - Messages, folders, labels, attachments
Zoho People - Employees, departments, designations, attendance, leave
Zoho Recruit - Candidates, job openings, interviews, applications

### Slack - Post Message (Native API)

# Native Slack API: POST https://slack.com/api/chat.postMessage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### HubSpot - Create Contact (Native API)

# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Google Sheets - Get Spreadsheet Values (Native API)

# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Salesforce - SOQL Query (Native API)

# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Airtable - List Tables (Native API)

# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Notion - Query Database (Native API)

# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Stripe - List Customers (Native API)

# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### JavaScript (Node.js)

const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': \`Bearer ${process.env.MATON_API_KEY}\`
  },
  body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});

### Python

import os
import requests

response = requests.post(
    'https://gateway.maton.ai/slack/api/chat.postMessage',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    json={'channel': 'C0123456', 'text': 'Hello!'}
)

### Error Handling

StatusMeaning400Missing connection for the requested app401Invalid or missing Maton API key429Rate limited (10 requests/second per account)500Internal Server Error4xx/5xxPassthrough error from the target API

Errors from the target API are passed through with their original status codes and response bodies.

### Troubleshooting: API Key Issues

Check that the MATON_API_KEY environment variable is set:

echo $MATON_API_KEY

Verify the API key is valid by listing connections:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Troubleshooting: Invalid App Name

Verify your URL path starts with the correct app name. The path must begin with /google-mail/. For example:

Correct: https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages
Incorrect: https://gateway.maton.ai/gmail/v1/users/me/messages

Ensure you have an active connection for the app. List your connections to verify:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

### Troubleshooting: Server Error

A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.

### Rate Limits

10 requests per second per account
Target API rate limits also apply

### Notes

When using curl with URLs containing brackets (fields[], sort[], records[]), use the -g flag to disable glob parsing
When piping curl output to jq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors

### Tips

Use native API docs: Refer to each service's official API documentation for endpoint paths and parameters.


Headers are forwarded: Custom headers (except Host and Authorization) are forwarded to the target API.


Query params work: URL query parameters are passed through to the target API.


All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.


QuickBooks special case: Use :realmId in the path and it will be replaced with the connected realm ID.

### Optional

Github
API Reference
Maton Community
Maton Support
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: kdegeek
- Version: 1.0.0
## Source health
- Status: unstable
- Item is unstable.
- This item is timing out or returning errors right now. Review the source page and try again later.
- Health scope: item
- Reason: timeout
- Checked at: 2026-04-29T03:22:59.473Z
- Expires at: 2026-04-29T15:22:59.473Z
- Recommended action: Review source status
## Links
- [Detail page](https://openagent3.xyz/skills/api-gateway-1)
- [Send to Agent page](https://openagent3.xyz/skills/api-gateway-1/agent)
- [JSON manifest](https://openagent3.xyz/skills/api-gateway-1/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/api-gateway-1/agent.md)
- [Download page](https://openagent3.xyz/downloads/api-gateway-1)