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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/marketo-custom-objects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Marketo Custom Objects API
version: '1.0'
description: 'Operations tagged Custom Objects across 2 of this provider''s published API definitions: marketo-data-ingestion-openapi-original.json, marketo-lead-database-openapi-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://mkto-ingestion-api.adobe.io
description: Marketo Data Ingestion API
- url: https://localhost:8080/
tags:
- name: Custom Objects
description: Upsert (insert or update) custom object records
paths:
/subscriptions/{munchkinId}/customobjects/{customObjectAPIName}:
post:
tags:
- Custom Objects
summary: Sync Custom Objects
description: 'Upsert (insert or update) a list of custom object records. If a link field to a Person is specified in the request and that Person does not exist, several retries occur. If that Person is added during the retry window (65 minutes), then the update is successful. Required permission: `Read-Write Custom Object`.'
operationId: syncCustomObjects
parameters:
- name: munchkinId
in: path
description: Marketo subscription Munchkin ID
required: true
schema:
type: string
example: 556-RJS-213
- name: customObjectAPIName
in: path
description: The API name of the custom object type
required: true
schema:
type: string
example: purchases
- name: X-Mkto-User-Token
in: header
description: Marketo API access token
required: true
schema:
type: string
- name: X-Correlation-Id
in: header
description: Arbitrary string (max 255 characters). Used to trace requests through the system via Marketo Observability Data Stream.
schema:
type: string
- name: X-Request-Source
in: header
description: Arbitrary string (max 50 characters). Used to trace the source of requests.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SyncCustomObjectsRequest'
example:
dedupeBy: dedupeFields
priority: high
customObjects:
- email: brooklyn.parker@karnv.com
vin: 20UYA31581L000000
make: BMW
model: 3-Series 330i
year: 2003
- email: johnny.neal@yvu30.com
vin: 19UYA31581L000000
make: BMW
model: 3-Series 325i
year: 1989
responses:
'202':
description: Accepted – request accepted for async processing
headers:
X-Request-Id:
description: Unique request ID
schema:
type: string
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized – OAuth token is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
servers:
- url: https://mkto-ingestion-api.adobe.io
description: Marketo Data Ingestion API
/rest/v1/customobjects.json:
get:
tags:
- Custom Objects
summary: List Custom Objects
description: 'Returns a list of Custom Object types available in the target instance, along with id and deduplication information for each type. Required Permissions: Read-Only Custom Object, Read-Write Custom Object'
operationId: listCustomObjectsUsingGET
parameters:
- name: names
in: query
description: Comma-separated list of names to filter types on
required: false
style: form
explode: true
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectMetaData'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/{customObjectName}.json:
get:
tags:
- Custom Objects
summary: Get Custom Objects
description: 'Retrieves a list of custom objects records based on filter and set of values. There are two unique types of requests for this endpoint: one is executed normally using a GET with URL parameters, the other is by passing a JSON object in the body of a POST and specifying _method=GET in the querystring. The latter is used when dedupeFields attribute has more than one field, which is known as a "compound key". Required Permissions: Read-Only Custom Object, Read-Write Custom Object'
operationId: getCustomObjectsUsingGET
parameters:
- name: customObjectName
in: path
description: Name of custom object type to retrieve records for
required: true
schema:
type: string
- name: filterType
in: query
description: Field to filter on. Searchable fields can be retrieved with Describe Custom Object
required: true
schema:
type: string
- name: filterValues
in: query
description: Comma-separated list of field values to match against.
required: true
style: form
explode: true
schema:
type: array
items:
type: string
- name: fields
in: query
description: Comma-separated list of fields to return for each record. If unset marketoGuid, dedupeFields, updatedAt, createdAt will be returned
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: batchSize
in: query
description: The batch size to return. The max and default value is 300.
required: false
schema:
type: integer
format: int32
- name: nextPageToken
in: query
description: A token will be returned by this endpoint if the result set is greater than the batch size and can be passed in a subsequent call through this parameter. See Paging Tokens for more info.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LookupCustomObjectRequest'
description: Optional JSON request for retrieving custom objects with compound keys. Example:<br><code>{<br>"filterType":"dedupeFields",<br>"fields":[<br>"marketoGuid",<br>"Bedrooms",<br>"yearBuilt"<br>],<br>"input":[<br>{<br>"mlsNum":"1962352",<br>"houseOwnerId":"42645756"<br>},<br>{<br>"mlsNum":"3962352",<br>"houseOwnerId":"62645756"<br>}<br>]<br>}</code><br>
post:
tags:
- Custom Objects
summary: Sync Custom Objects
description: 'Inserts, updates, or upserts custom object records to the target instance. Required Permissions: Read-Write Custom Object'
operationId: syncCustomObjectsUsingPOST
parameters:
- name: customObjectName
in: path
description: customObjectName
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SyncCustomObjectRequest'
description: syncCustomObjectRequest
required: true
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/{customObjectName}/delete.json:
post:
tags:
- Custom Objects
summary: Delete Custom Objects
description: 'Deletes a given set of custom object records. Required Permissions: Read-Write Custom Object'
operationId: deleteCustomObjectsUsingPOST
parameters:
- name: customObjectName
in: path
description: customObjectName
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteCustomObjectRequest'
description: deleteCustomObjectRequest
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/{customObjectName}/describe.json:
get:
tags:
- Custom Objects
summary: Describe Custom Objects
description: 'Returns metadata regarding a given custom object. Required Permissions: Read-Only Custom Object, Read-Write Custom Object'
operationId: describeUsingGET_1
parameters:
- name: customObjectName
in: path
description: customObjectName
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectMetaData'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema.json:
get:
tags:
- Custom Objects
summary: List Custom Object Types
description: 'Returns a list of Custom Object Types available in the target instance, along with id, deduplication, relationship, and field information for each type. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type'
operationId: listCustomObjectTypesUsingGET
parameters:
- name: names
in: query
description: Comma-separated list of API names of custom object types to filter on
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: state
in: query
description: State of custom object type to filter on. By default, if an approved version exists, it is returned. Otherwise, the draft version is returned.
required: false
schema:
type: string
enum:
- draft
- approved
- approvedWithDraft
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectMetaData'
post:
tags:
- Custom Objects
summary: Sync Custom Object Type
description: 'Inserts, updates, or upserts custom object type record to the target instance. Required Permissions: Read-Write Custom Object Type'
operationId: syncCustomObjectTypeUsingPOST
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SyncCustomObjectTypeRequest'
description: JSON object containing custom object type attributes
required: true
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/approve.json:
post:
tags:
- Custom Objects
summary: Approve Custom Object Type
description: 'Approves the current draft of the type, and makes it the live version. This will delete the current live version of the type. Required Permissions: Read-Write Custom Object Type'
operationId: approveCustomObjectTypeUsingPOST
parameters:
- name: apiName
in: path
description: API Name of the custom object type to approve
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/discardDraft.json:
post:
tags:
- Custom Objects
summary: Discard Custom Object Type Draft
description: 'Discards the current draft of the custom object type. Required Permissions: Read-Write Custom Object Type'
operationId: discardCustomObjectTypeUsingPOST
parameters:
- name: apiName
in: path
description: API Name of the custom object type draft to discard
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/delete.json:
post:
tags:
- Custom Objects
summary: Delete Custom Object Type
description: 'Deletes the target custom object type. The type must first be removed from use by any assets, such as triggers or filters. Required Permissions: Read-Write Custom Object Type'
operationId: deleteCustomObjectTypeUsingPOST
parameters:
- name: apiName
in: path
description: API Name of the custom object type to delete
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/describe.json:
get:
tags:
- Custom Objects
summary: Describe Custom Object Type
description: 'Returns metadata regarding a given custom object type (including relationships and fields). Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type'
operationId: describeCustomObjectTypeUsingGET
parameters:
- name: apiName
in: path
description: API name of custom object type to describe
required: true
schema:
type: string
- name: state
in: query
description: State of custom object type to filter on. By default, if an approved version exists, it is returned. Otherwise, the draft version is returned.
required: false
schema:
type: string
enum:
- draft
- approved
- approvedWithDraft
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectMetaData'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/addField.json:
post:
tags:
- Custom Objects
summary: Add Custom Object Type Fields
description: 'Adds fields to custom object type. Required Permissions: Read-Write Custom Object Type'
operationId: addCustomObjectTypeFieldsUsingPOST
parameters:
- name: apiName
in: path
description: API name of custom object type
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddCustomObjectTypeFieldsRequest'
description: JSON object containing custom object type fields
required: true
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/deleteField.json:
post:
tags:
- Custom Objects
summary: Delete Custom Object Type Fields
description: 'Deletes fields from custom object type. Required Permissions: Read-Write Custom Object Type'
operationId: deleteCustomObjectTypeFieldsUsingPOST
parameters:
- name: apiName
in: path
description: API name of custom object type
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteCustomObjectTypeFieldsRequest'
description: JSON object containing custom object type fields
required: true
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/{fieldApiName}/updateField.json:
post:
tags:
- Custom Objects
summary: Update Custom Object Type Field
description: 'Updates a field in custom object type. Required Permissions: Read-Write Custom Object Type'
operationId: updateCustomObjectTypeFieldUsingPOST
parameters:
- name: apiName
in: path
description: API name of custom object type
required: true
schema:
type: string
- name: fieldApiName
in: path
description: API name of custom object type field
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomObjectTypeFieldRequest'
description: JSON object containing custom object type fields
required: true
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/fieldDataTypes.json:
get:
tags:
- Custom Objects
summary: Get Custom Object Type Field Data Types
description: 'Returns a list of permissible data types that are assigned to custom object fields. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type'
operationId: getCustomObjectTypeFieldDataTypesUsingGET
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfCustomObjectTypeFieldDataTypes'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/linkableObjects.json:
get:
tags:
- Custom Objects
summary: Get Custom Object Linkable Objects
description: 'Returns a list of linkable custom objects and their fields. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type'
operationId: getCustomObjectTypeLinkableObjectsUsingGET
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectLinkableObject'
servers:
- url: https://localhost:8080/
/rest/v1/customobjects/schema/{apiName}/dependentAssets.json:
get:
tags:
- Custom Objects
summary: Get Custom Object Dependent Assets
description: 'Returns a list of dependent assets for a custom object type, including their in-instance location. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type'
operationId: getCustomObjectTypeDependentAssetsUsingGET
parameters:
- name: apiName
in: path
description: REST API name for custom object
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseOfObjectDependentAssets'
servers:
- url: https://localhost:8080/
components:
schemas:
SyncCustomObjectsRequest:
required:
- customObjects
type: object
properties:
priority:
type: string
description: Priority of the request.
enum:
- normal
- high
default: normal
dedupeBy:
type: string
description: Attributes to deduplicate on.
enum:
- dedupeFields
- marketoGUID
default: dedupeFields
customObjects:
type: array
description: List of attribute name-value pairs for the object.
items:
$ref: '#/components/schemas/CustomObject'
CustomObject:
type: object
description: Custom object record. Fields depend on the custom object schema definition.
additionalProperties: true
example:
email: brooklyn.parker@karnv.com
vin: 20UYA31581L000000
make: BMW
model: 3-Series 330i
year: 2003
ErrorResponse:
type: object
description: Error response body returned for non-202 responses.
properties:
error_code:
type: string
description: Error code.
example: '4000801'
message:
type: string
description: Error message.
example: Bad request
ObjectMetaData:
type: object
required:
- createdAt
- dedupeFields
- description
- displayName
- pluralName
- fields
- idField
- apiName
- relationships
- searchableFields
- updatedAt
- status
- version
properties:
createdAt:
type: string
format: date-time
description: Datetime when the object type was created
dedupeFields:
type: array
description: List of dedupe fields. Arrays with multiple members are compound keys
items:
type: string
description:
type: string
description: Description of the object type
displayName:
type: string
description: UI display-name of the object type
pluralName:
type: string
description: UI plural-name of the custom object type
fields:
type: array
description: List of fields available on the object type
items:
$ref: '#/components/schemas/ObjectField'
idField:
type: string
description: Primary id key of the object type
apiName:
type: string
description: Name of the object type
relationships:
type: array
description: List of relationships which the object has
items:
$ref: '#/components/schemas/ObjectRelation'
searchableFields:
type: array
description: List of fields valid for use as a filter type in a query
items:
type: array
items:
type: string
updatedAt:
type: string
format: date-time
description: Datetime when the object type was most recently updated
state:
type: string
description: Approval state of object type
enum:
- draft
- approved
- approvedWithDraft
version:
type: string
description: Version of object type that is returned in response
enum:
- draft
- approved
DeleteCustomObjectRequest:
type: object
required:
- input
properties:
deleteBy:
type: string
description: Field to delete records by. Permissible values are idField or dedupeFields as indicated by the result of the corresponding describe record
input:
type: array
description: List of input records
items:
$ref: '#/components/schemas/CustomObject_2'
SyncCustomObjectRequest:
type: object
required:
- input
properties:
action:
type: string
description: Type of sync operation to perform
enum:
- createOnly
- updateOnly
- createOrUpdate
dedupeBy:
type: string
description: Field to deduplicate on. If the value in the field for a given record is not unique, an error will be returned for the individual record.
input:
type: array
description: List of input records
items:
$ref: '#/components/schemas/CustomObject_2'
ResponseOfCustomObject:
type: object
required:
- errors
- requestId
- result
- success
- warnings
properties:
errors:
type: array
description: Array of errors that occurred if the request was unsuccessful
items:
$ref: '#/components/schemas/Error'
moreResult:
type: boolean
example: false
description: Boolean indicating if there are more results in subsequent pages
nextPageToken:
type: string
description: Paging token given if the result set exceeded the allowed batch size
requestId:
type: string
description: Id of the request made
result:
type: array
description: Array of results for individual records in the operation, may be empty
items:
$ref: '#/components/schemas/CustomObject_2'
success:
type: boolean
example: false
description: Whether the request succeeded
warnings:
type: array
description: Array of warnings given for the operation
items:
$ref: '#/components/schemas/Warning'
ResponseOfObjectLinkableObject:
type: object
required:
- errors
- requestId
- result
- success
- warnings
properties:
errors:
type: array
description: Array of errors that occurred if the request was unsuccessful
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
description: Id of the request made
result:
type: array
description: List of permissible objects to use as custom object link field
items:
$ref: '#/components/schemas/ObjectLinkableObject'
success:
type: boolean
example: false
description: Whether the request succeeded
warnings:
type: array
description: Array of warnings given for the operation
items:
$ref: '#/components/schemas/Warning'
Reason:
type: object
required:
- code
- message
properties:
code:
type: string
description: Integer code of the reason
message:
type: string
description: Message describing the reason for the status of the operation
RelatedObject:
type: object
required:
- field
- name
properties:
field:
type: string
description: Name of link field (within link object)
name:
type: string
description: Name of the link object
Error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Error code of the error. See full list of error codes <a href="https://developers.marketo.com/rest-api/error-codes/">here</a>
message:
type: string
description: Message describing the cause of the error
CustomObject_2:
type: object
required:
- marketoGUID
- seq
properties:
marketoGUID:
type: string
description: Unique GUID of the custom object records
reasons:
type: array
description: List of reasons why an operation did not succeed. Reasons are only present in API responses and should not be submitted
items:
$ref: '#/components/schemas/Reason'
seq:
type: integer
format: int32
description: Integer indicating the sequence of the record in response. This value is correlated to the order of the records included in the request input. Seq should only be part of responses and should not be submitted.
LookupCustomObjectRequest:
type: object
required:
- input
properties:
batchSize:
type: integer
format: int32
description: Maximum number of records to return in the response. Max and default is 300
fields:
type: array
description: 'List of fields to return. If not specified, will return the following fields: marketoGuid, dedupeFields, updatedAt, createdAt, filterType'
items:
type: string
filterType:
type: string
description: 'Field to search on. Valid values are: dedupeFields, idFields, and any field defined in searchableFields attribute of Describe endpoint. Default is dedupeFields'
input:
type: array
description: Search values when using a compound key. Each element must include each of the fields in the compound key. Compound keys are determined by the contents of "dedupeFields" in the Describe result for the object
items:
$ref: '#/components/schemas/CustomObject_2'
nextPageToken:
type: string
description: Paging token returned from a previous response
DeleteCustomObjectTypeField:
type: object
required:
- name
properties:
name:
type: string
description: API Name of custom object type field
CustomObjectTypeFieldRelatedTo:
type: object
required:
- name
- field
properties:
name:
type: string
description: Name of linkable object type
field:
type: string
description: Foreign field to which the parent is linked
ObjectField:
type: object
properties:
dataType:
type: string
description: Datatype of the field
displayName:
type: string
description: UI display-name of the field
length:
type: integer
format: int32
description: Max length of the field. Only applicable to text, string, and text area.
name:
type: string
description: Name of the field
updateable:
type: boolean
example: false
description: Whether the field is updateable
crmManaged:
type: boolean
example: false
description: Whether the field is managed by CRM (native sync)
ObjectLinkableObjectField:
type: object
required:
- name
- displayName
- dataType
properties:
name:
type: string
description: Link field API name
displayName:
type: string
description: Link field name
dataType:
type: string
description: Link field data type
ResponseOfCustomObjectType:
type: object
required:
- errors
- requestId
- result
- success
- warnings
properties:
errors:
type: array
description: Array of errors that occurred if the request was unsuccessful
items:
$ref: '#/components/schemas/Error'
requestId:
type: string
description: Id of the request made
result:
type: array
description: Empty array
items:
$ref: '#/components/schemas/Empty'
success:
type: boolean
example: false
descripti
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/marketo/refs/heads/main/openapi/marketo-custom-objects-api-openapi.yml