Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/feedback1-ai:feedback1-ai-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Feedback1 Public Contacts API
description: '## Feedback1 Public API
REST API for programmatic access to Feedback1 data.
### Authentication
All endpoints require a Bearer token (API key) in the `Authorization` header:
```
Authorization: Bearer your_api_key_here
```
You can create API keys in the Feedback1 dashboard under Settings > API Keys.
### Rate Limits
- 200 requests per minute per API key
- Rate limit headers are included in responses
### Base URL
```
https://app.feedback1.ai/api/v1
```'
version: 1.0.0
servers:
- url: /api/v1
tags:
- name: Contacts
description: CRM contacts (people)
paths:
/accounts/{account_id}/contacts:
get:
tags:
- Contacts
summary: List Account Contacts
description: List contacts for a specific account.
operationId: list_account_contacts_accounts__account_id__contacts_get
security:
- HTTPBearer: []
parameters:
- name: account_id
in: path
required: true
schema:
type: string
title: Account Id
- name: identifier
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by identifier (partial match)
title: Identifier
description: Filter by identifier (partial match)
- name: identifier_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by identifier type
title: Identifier Type
description: Filter by identifier type
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number (1-based)
default: 1
title: Page
description: Page number (1-based)
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Items per page (max 100)
default: 20
title: Page Size
description: Items per page (max 100)
- name: sort_by
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Field to sort by
title: Sort By
description: Field to sort by
- name: sort_order
in: query
required: false
schema:
type: string
pattern: ^(asc|desc)$
description: Sort order
default: desc
title: Sort Order
description: Sort order
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Contacts
summary: Create Account Contact
description: Create a contact for a specific account.
operationId: create_account_contact_accounts__account_id__contacts_post
security:
- HTTPBearer: []
parameters:
- name: account_id
in: path
required: true
schema:
type: string
title: Account Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ContactCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/contacts:
get:
tags:
- Contacts
summary: List All Contacts
description: List all contacts for the tenant.
operationId: list_all_contacts_contacts_get
security:
- HTTPBearer: []
parameters:
- name: identifier
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by identifier (partial match)
title: Identifier
description: Filter by identifier (partial match)
- name: identifier_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by identifier type
title: Identifier Type
description: Filter by identifier type
- name: crm_account_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by account ID
title: Crm Account Id
description: Filter by account ID
- name: source
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by source
title: Source
description: Filter by source
- name: created_after
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by creation date (ISO 8601)
title: Created After
description: Filter by creation date (ISO 8601)
- name: created_before
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by creation date (ISO 8601)
title: Created Before
description: Filter by creation date (ISO 8601)
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number (1-based)
default: 1
title: Page
description: Page number (1-based)
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Items per page (max 100)
default: 20
title: Page Size
description: Items per page (max 100)
- name: sort_by
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Field to sort by
title: Sort By
description: Field to sort by
- name: sort_order
in: query
required: false
schema:
type: string
pattern: ^(asc|desc)$
description: Sort order
default: desc
title: Sort Order
description: Sort order
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Contacts
summary: Create Contact
description: 'Create a new contact.
Supports both email and non-email contacts (Twitter handles, Reddit usernames, etc.)
If no account is specified, one is created. Company email domains share
one account named from the domain. Free-mail and disposable addresses
each get a personal account with no domain, never named "No Account".'
operationId: create_contact_contacts_post
security:
- HTTPBearer: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ContactCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/contacts/{contact_id}:
get:
tags:
- Contacts
summary: Get Contact
description: Get a specific contact by ID.
operationId: get_contact_contacts__contact_id__get
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
put:
tags:
- Contacts
summary: Update Contact
description: Update a contact.
operationId: update_contact_contacts__contact_id__put
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ContactUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Contacts
summary: Delete Contact
description: Delete a contact.
operationId: delete_contact_contacts__contact_id__delete
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ContactCreate:
properties:
email:
anyOf:
- type: string
format: email
- type: 'null'
title: Email
description: Email address (use this OR identifier+identifier_type)
identifier:
anyOf:
- type: string
maxLength: 255
- type: 'null'
title: Identifier
description: Contact identifier (email, @handle, u/username)
identifier_type:
anyOf:
- type: string
- type: 'null'
title: Identifier Type
description: 'Type: ''email'', ''twitter_handle'', ''reddit_username'''
first_name:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: First Name
last_name:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Last Name
phone:
anyOf:
- type: string
maxLength: 50
- type: 'null'
title: Phone
job_title:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Job Title
linkedin_url:
anyOf:
- type: string
maxLength: 255
- type: 'null'
title: Linkedin Url
crm_account_id:
anyOf:
- type: string
- type: 'null'
title: Crm Account Id
description: Account ID to associate with
source:
anyOf:
- type: string
maxLength: 50
- type: 'null'
title: Source
description: 'Source: ''api'', ''portal'', ''import'', etc.'
type: object
title: ContactCreate
description: 'Create contact request - consistent with internal CRM API
Supports both email and non-email contacts (Twitter handles, Reddit usernames, etc.)
Either provide email OR (identifier + identifier_type)'
ContactUpdate:
properties:
first_name:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: First Name
last_name:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Last Name
phone:
anyOf:
- type: string
maxLength: 50
- type: 'null'
title: Phone
job_title:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Job Title
linkedin_url:
anyOf:
- type: string
maxLength: 255
- type: 'null'
title: Linkedin Url
crm_account_id:
anyOf:
- type: string
- type: 'null'
title: Crm Account Id
type: object
title: ContactUpdate
description: Update contact request
ContactAccountInfo:
properties:
id:
type: string
title: Id
name:
type: string
title: Name
type: object
required:
- id
- name
title: ContactAccountInfo
description: Account info in contact response
ContactResponse:
properties:
id:
type: string
title: Id
identifier:
type: string
title: Identifier
identifier_type:
type: string
title: Identifier Type
email:
anyOf:
- type: string
- type: 'null'
title: Email
first_name:
anyOf:
- type: string
- type: 'null'
title: First Name
last_name:
anyOf:
- type: string
- type: 'null'
title: Last Name
display_name:
anyOf:
- type: string
- type: 'null'
title: Display Name
phone:
anyOf:
- type: string
- type: 'null'
title: Phone
job_title:
anyOf:
- type: string
- type: 'null'
title: Job Title
linkedin_url:
anyOf:
- type: string
- type: 'null'
title: Linkedin Url
avatar_url:
anyOf:
- type: string
- type: 'null'
title: Avatar Url
crm_account_id:
anyOf:
- type: string
- type: 'null'
title: Crm Account Id
account:
anyOf:
- $ref: '#/components/schemas/ContactAccountInfo'
- type: 'null'
source:
anyOf:
- type: string
- type: 'null'
title: Source
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- id
- identifier
- identifier_type
- created_at
- updated_at
title: ContactResponse
description: Contact response for Public API - consistent with internal CRM API
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ContactListResponse:
properties:
items:
items:
$ref: '#/components/schemas/ContactResponse'
type: array
title: Items
total:
type: integer
title: Total
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
has_more:
type: boolean
title: Has More
type: object
required:
- items
- total
- page
- page_size
- has_more
title: ContactListResponse
description: Paginated list of contacts
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
HTTPBearer:
type: http
scheme: bearer