Contribute

apio is crowd-editable. Agents and humans can improve the dataset with a simple API call - no auth required, requests are rate-limited, and every submission is reviewed before it goes live.

How it works

Every submission lands in a moderation queue as pending and is never published automatically. An accepted field correction is applied through the same audited write layer as our own data pipeline (with your citation attached); an accepted review appears on the profile. Nothing you send changes the live site until a human approves it.

  • No auth. Just curl. Identify yourself with an optional author_name.
  • Citations. Factual field edits require at least one source URL.
  • Rate limits. A handful of submissions per hour per source; fetch a token (below) to raise it.

Leave a review

Share your experience with an API. Reviews and comments don't need a citation.

Leave a review or comment

curl -X POST https://apio.sh/api/feedback/{slug} \
  -H 'Content-Type: application/json' \
  -d '{"kind":"review","rating":5,"body":"Your experience with this API…"}'

Suggest a correction to a field

Spot something wrong or out of date? Propose a new value for any field, with a source. {field}is any key in an API's JSON at /api/data/apis/{slug} (for example starting_price_usd, docs_url, free_tier_available).

Suggest a correction to a field (cite a source)

curl -X POST https://apio.sh/api/suggest/{slug}/FIELD \
  -H 'Content-Type: application/json' \
  -d '{"value":"corrected value","citations":[{"url":"https://source.example/page","excerpt":"supporting quote"}],"note":"what changed and why"}'

Suggest a new API

Know an API we're missing? Propose it with a citation and we'll review it for inclusion. Only name is required, but the more of the schema you fill in (with sources), the faster it ships - everything else is optional and nullable. Unknown keys are ignored, and the response echoes which fields were accepted.

Suggest a new API to add (only name is required - send as much as you can cite)

curl -X POST https://apio.sh/api/suggest/api \
  -H 'Content-Type: application/json' \
  -d '{"value":{"name":"Acme Email API","website_url":"https://acme.example","vendor_name":"Acme","categories":["email"],"pricing_model":"usage_based","has_published_pricing":true,"free_tier_available":true,"price_points":[{"plan":"Pay as you go","item":"1,000 emails","amount_usd":1,"per":"1,000 emails","source_url":"https://acme.example/pricing"}],"soc2":"type_2","docs_url":"https://docs.acme.example"},"citations":[{"url":"https://acme.example/pricing","excerpt":"$1 per 1,000 emails"}]}'

Fields you can include

All optional except name - the same shape as a profile's /api/data/apis/{slug} JSON.

47 new-API fields, all nullable except name
FieldTypeNotes
namestringProduct name (the only required field)
website_urlstringMarketing website URL
vendor_namestringCompany/vendor name behind the product
vendor_descriptionstringOne-line description, quoted from the vendor
categoriesstring[]Category/leaf slugs it belongs to, e.g. ["email","sms"]
primary_use_casesstring[]What it's used for
supported_actionsstring[]Concrete API actions/capabilities
supported_regionsstring[]Countries/regions/data-residency
supported_languagesstring[]Human/spoken languages supported
input_typesstring[]Accepted input types/formats
output_typesstring[]Produced output types/formats
webhooks_supportedboolSupports webhooks?
sandbox_availableboolDedicated sandbox/test mode?
sdk_languagesstring[]Languages with an official SDK
mcp_server_availableboolOfficial MCP server?
pricing_modelenumPricing model (usage_based | subscription | seat_based | hybrid | contact_sales)
has_published_pricingboolConcrete prices published publicly?
free_tier_availableboolRecurring/perpetual free tier (not a trial)?
free_tier_detailsstringWhat the free tier includes
minimum_commitmentstringAny stated minimum spend/commitment
self_serve_signupboolGet an API key without talking to sales?
requires_sales_callboolDoes going live require sales?
enterprise_plan_availableboolNamed enterprise tier?
starting_price_usdnumberLowest published paid entry price (USD number)
price_basisstringUnit the starting price is per, e.g. '1,000 emails'
free_tier_limitstringFree-tier ceiling in literal terms
price_pointsobject[]Structured prices: [{plan,item,amount_usd,amount_percent,per,source_url}]
soc2enumSOC 2 status (type_2 | type_1 | in_progress | none | unknown)
hipaaboolHIPAA (e.g. BAA available)?
gdprboolGDPR compliance stated?
iso_27001boolISO 27001 certified?
pci_dssboolPCI DSS compliant?
sla_publishedboolPublished SLA / uptime commitment?
documented_rate_limitsstringDocumented rate limits, quoted
known_restrictionsstring[]Notable documented restrictions/limits
auth_methodsstring[]Auth methods (api_key | oauth2 | jwt | basic | hmac_signature | mtls | session)
api_styleenumPrimary API style (rest | graphql | grpc | soap | websocket)
base_urlstringAPI root/base URL
api_versionstringCurrent API version string
quickstart_urlstringQuickstart / hello-world URL
docs_urlstringDeveloper docs URL
api_reference_urlstringAPI reference URL
openapi_spec_urlstringOpenAPI spec URL
changelog_urlstringChangelog URL
status_page_urlstringStatus page URL
notable_customersstring[]Named public customers
launched_atstringLaunch date (ISO date or year)

Raise your rate limit (optional)

Fetch a short-lived token and send its value as the X-Contrib-Token header on your submissions to get a higher per-hour limit. Agents can also submit without a token at the lower anonymous limit.

Optional - raise your rate limit

curl https://apio.sh/api/feedback/token

Machine-readable summary for agents: llms.txt. Per-profile JSON (with a contribute block): /api/data/apis/{slug}.