Supaglue Magic Links API
A `Magic Link` is a secure URL that allows your customers to connect their accounts to Supaglue.
A `Magic Link` is a secure URL that allows your customers to connect their accounts to Supaglue.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/supaglue-magic-links-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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:
version: 0.25.7
title: Management Magic Links API
contact:
name: Supaglue
email: docs@supaglue.com
url: https://supaglue.com
description: '#### Introduction
Welcome to the Management API documentation. You can use this API to manage customer integrations and connections.
#### Base API URL
```
https://api.supaglue.io/mgmt/v2
```
'
servers:
- url: https://api.supaglue.io/mgmt/v2
description: Supaglue API
tags:
- name: Magic Links
description: A `Magic Link` is a secure URL that allows your customers to connect their accounts to Supaglue.
paths:
/magic_links:
get:
operationId: getMagicLinks
tags:
- Magic Links
security:
- x-api-key: []
summary: List magic links
description: Get a list of magic links
responses:
'200':
description: Magic Links
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/magic_link'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
post:
operationId: createMagicLink
summary: Create magic link
tags:
- Magic Links
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_magic_link'
responses:
'201':
description: Entity created
content:
application/json:
schema:
$ref: '#/components/schemas/magic_link'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'409':
$ref: '#/components/responses/conflict'
'422':
$ref: '#/components/responses/unprocessableEntity'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
/magic_links/{magic_link_id}:
parameters:
- name: magic_link_id
in: path
required: true
schema:
type: string
example: 6bf954f9-dba3-4c34-9275-3830dccb0030
delete:
operationId: deleteMagicLink
summary: Delete magic link
tags:
- Magic Links
security:
- x-api-key: []
responses:
'204':
description: Magic Link deleted
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'409':
$ref: '#/components/responses/conflict'
'422':
$ref: '#/components/responses/unprocessableEntity'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
components:
schemas:
errors:
type: array
items:
type: object
properties:
id:
type: string
description: A unique identifier for the instance of the error. Provide this to support when contacting Supaglue.
example: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
detail:
type: string
description: A detailed description of the error.
example: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
problem_type:
type: string
description: The Supaglue error code associated with the error.
example: MISSING_REQUIRED_FIELD
deprecated: true
title:
type: string
description: A brief description of the error. The schema and type of message will vary by Provider.
example: 'Property values were not valid
'
code:
type: string
description: The Supaglue error code associated with the error.
example: MISSING_REQUIRED_FIELD
status:
type: string
description: The HTTP status code associated with the error.
example: '400'
meta:
type: object
description: Additional metadata about the error.
properties:
cause:
type: object
description: The cause of the error. Usually the underlying error from the remote Provider.
example:
code: 400
body:
status: error
message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
category: VALIDATION_ERROR
headers:
access-control-allow-credentials: 'false'
cf-cache-status: DYNAMIC
cf-ray: 8053d17b9dae9664-SJC
connection: close
content-length: '361'
content-type: application/json;charset=utf-8
date: Mon, 11 Sep 2023 23:51:22 GMT
nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
server: cloudflare
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin, Accept-Encoding
x-content-type-options: nosniff
x-envoy-upstream-service-time: '91'
x-evy-trace-listener: listener_https
x-evy-trace-route-configuration: listener_https/all
x-evy-trace-route-service-name: envoyset-translator
x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
x-evy-trace-virtual-host: all
x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-hubspot-ratelimit-interval-milliseconds: '10000'
x-hubspot-ratelimit-max: '100'
x-hubspot-ratelimit-remaining: '99'
x-hubspot-ratelimit-secondly: '10'
x-hubspot-ratelimit-secondly-remaining: '9'
x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
origin:
type: string
enum:
- remote-provider
- supaglue
description: The origin of the error.
example: remote-provider
application_name:
type: string
description: The name of the application that generated the error.
example: MyCompany Production
required:
- origin
additionalProperties: true
required:
- id
- detail
- problem_type
- title
- code
- status
- meta
example:
- meta:
cause:
code: 400
body:
status: error
message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
category: VALIDATION_ERROR
headers:
access-control-allow-credentials: 'false'
cf-cache-status: DYNAMIC
cf-ray: 8053d17b9dae9664-SJC
connection: close
content-length: '361'
content-type: application/json;charset=utf-8
date: Mon, 11 Sep 2023 23:51:22 GMT
nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
server: cloudflare
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin, Accept-Encoding
x-content-type-options: nosniff
x-envoy-upstream-service-time: '91'
x-evy-trace-listener: listener_https
x-evy-trace-route-configuration: listener_https/all
x-evy-trace-route-service-name: envoyset-translator
x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
x-evy-trace-virtual-host: all
x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-hubspot-ratelimit-interval-milliseconds: '10000'
x-hubspot-ratelimit-max: '100'
x-hubspot-ratelimit-remaining: '99'
x-hubspot-ratelimit-secondly: '10'
x-hubspot-ratelimit-secondly-remaining: '9'
x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
detail: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
problem_type: MISSING_REQUIRED_FIELD
title: 'Property values were not valid
'
code: MISSING_REQUIRED_FIELD
status: '400'
id: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
create_magic_link:
type: object
properties:
customer_id:
type: string
example: my-customer-1
provider_name:
$ref: '#/components/schemas/provider_name'
return_url:
type: string
description: URL to redirect to after the connection is authorized.
example: https://app.myapp.com/connections/123456
expiration_secs:
type: number
example: 18000
required:
- customer_id
- provider_name
- expiration_secs
- return_url
provider_name:
type: string
enum:
- hubspot
- salesforce
- pipedrive
- zendesk_sell
- ms_dynamics_365_sales
- zoho_crm
- capsule
- outreach
- gong
- apollo
- salesloft
- intercom
- linear
- clearbit
- 6sense
- marketo
- salesforce_marketing_cloud_account_engagement
- slack
example: hubspot
magic_link:
type: object
properties:
id:
type: string
example: ec208408-db29-4705-b39e-4d33070b4ef6
status:
type: string
description: '`new` or `consumed`'
example: new
application_id:
type: string
example: d8ceb3ff-8b7f-4fa7-b8de-849292f6ca69
customer_id:
type: string
example: my-customer-1
provider_id:
type: string
example: 677fcfca-cf89-4387-a189-71c885be67bc
provider_name:
$ref: '#/components/schemas/provider_name'
url:
type: string
description: The magic link URL.
example: https://app.hubspot.com/contacts/123456
return_url:
type: string
description: URL to redirect to after the connection is authorized.
example: https://app.myapp.com/connections/123456
expires_at:
type: string
format: date-time
example: '2023-02-23T00:00:00Z'
description: Any ISO formatted date-time string indicating when the magic link expires.
required:
- id
- status
- application_id
- customer_id
- provider_id
- provider_name
- expires_at
- url
- return_url
responses:
unprocessableEntity:
description: Unprocessable entity
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
conflict:
description: Conflict
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
unauthorized:
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
notImplemented:
description: Not implemented
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
badRequest:
description: Bad request
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
notFound:
description: Not found
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
forbidden:
description: Forbidden
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
internalServerError:
description: Internal server error
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
securitySchemes:
x-api-key:
type: apiKey
name: x-api-key
in: header
description: API key to allow developers to access the API
x-webhooks:
sync.complete:
post:
summary: Sync complete
description: Notification of the completion of a sync
operationId: syncComplete
x-event-type: sync.complete
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: sync.complete
run_id: 2fdbd03d-11f2-4e66-a5e6-2b731c71a12d
connection_id: e30cbb93-5b05-4186-b6de-1acc10013795
customer_id: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
provider_name: salesforce
type: object
object_type: standard
object: contact
result: ERROR
error_message: Error message
schema:
oneOf:
- type: object
title: Object Sync Complete
properties:
webhook_event_type:
type: string
enum:
- sync.complete
example: sync.complete
run_id:
type: string
example: 2fdbd03d-11f2-4e66-a5e6-2b731c71a12d
connection_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
customer_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
provider_name:
$ref: '#/components/schemas/provider_name'
result:
type: string
enum:
- SUCCESS
- ERROR
num_records_synced:
type: integer
example: 100
error_message:
type: string
example: Error message
type:
type: string
enum:
- object
object_type:
type: string
enum:
- common
- standard
- custom
object:
type: string
example: contact
required:
- webhook_event_type
- run_id
- connection_id
- customer_id
- provider_name
- result
- type
- object_type
- object
- type: object
title: Entity Sync Complete
properties:
webhook_event_type:
type: string
enum:
- sync.complete
example: sync.complete
run_id:
type: string
example: 2fdbd03d-11f2-4e66-a5e6-2b731c71a12d
connection_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
customer_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
provider_name:
$ref: '#/components/schemas/provider_name'
result:
type: string
enum:
- SUCCESS
- ERROR
num_records_synced:
type: integer
example: 100
error_message:
type: string
example: Error message
type:
type: string
enum:
- entity
entity_id:
type: string
entity_name:
type: string
required:
- webhook_event_type
- run_id
- connection_id
- customer_id
- provider_name
- result
- type
- entity_id
- entity_name
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
sync.paused:
post:
summary: Sync paused
description: Notification after a sync is paused
operationId: syncPaused
x-event-type: sync.paused
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: sync.paused
connection_id: e30cbb93-5b05-4186-b6de-1acc10013795
customer_id: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
provider_name: salesforce
type: object
object_type: standard
object: contact
schema:
type: object
title: Object Sync Paused
properties:
webhook_event_type:
type: string
enum:
- sync.paused
example: sync.paused
run_id:
type: string
example: 2fdbd03d-11f2-4e66-a5e6-2b731c71a12d
connection_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
customer_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
provider_name:
$ref: '#/components/schemas/provider_name'
type:
type: string
enum:
- object
object_type:
type: string
enum:
- common
- standard
- custom
object:
type: string
example: contact
pause_reason:
type: string
required:
- webhook_event_type
- connection_id
- customer_id
- provider_name
- type
- object_type
- object
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
connection.created:
post:
summary: Customer connection created
description: Notification of the creation of a connection for a customer
operationId: connectionCreated
x-event-type: connection.created
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: connection.created
customer_id: e30cbb93-5b05-4186-b6de-1acc10013795
provider_id: 5a4dbac6-3a56-4ad9-8aa3-e7b7f00be024
category: crm
provider_name: salesforce
result: SUCCESS
schema:
type: object
properties:
webhook_event_type:
type: string
enum:
- connection.created
example: connection.created
customer_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
provider_id:
type: string
example: 5a4dbac6-3a56-4ad9-8aa3-e7b7f00be024
category:
$ref: '#/components/schemas/category'
provider_name:
$ref: '#/components/schemas/provider_name'
result:
type: string
enum:
- SUCCESS
- ERROR
required:
- webhook_event_type
- customer_id
- provider_id
- category
- provider_name
- result
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
connection.deleted:
post:
summary: Customer connection deleted
description: Notification of the deletion of a connection for a customer
operationId: connectionDeleted
x-event-type: connection.deleted
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: connection.deleted
connection_id: 6b0abaf8-076d-48e7-9cdf-f12c68e86e2b
customer_id: e30cbb93-5b05-4186-b6de-1acc10013795
provider_id: 5a4dbac6-3a56-4ad9-8aa3-e7b7f00be024
category: crm
provider_name: salesforce
result: SUCCESS
schema:
type: object
properties:
webhook_event_type:
type: string
enum:
- connection.deleted
example: connection.deleted
connection_id:
type: string
example: 6b0abaf8-076d-48e7-9cdf-f12c68e86e2b
customer_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
provider_id:
type: string
example: 5a4dbac6-3a56-4ad9-8aa3-e7b7f00be024
category:
$ref: '#/components/schemas/category'
provider_name:
$ref: '#/components/schemas/provider_name'
result:
type: string
enum:
- SUCCESS
- ERROR
required:
- webhook_event_type
- connection_id
- customer_id
- provider_id
- category
- provider_name
- result
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
entity.entity_mapping.created:
post:
deprecated: true
summary: Entity mapping created
description: Notification of the creation of an entity mapping
operationId: entityEntityMappingCreated
x-event-type: entity.entity_mapping.created
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: entity.entity_mapping.created
entity_id: e30cbb93-5b05-4186-b6de-1acc10013795
application_id: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id: a7052919-e024-4985-bd08-856056b66f59
customer_id: 1a2b3c4d5e6f
provider_name: salesforce
object_name: opportunity
object_type: standard
result: SUCCESS
schema:
type: object
properties:
webhook_event_type:
type: string
enum:
- entity.entity_mapping.created
example: entity.entity_mapping.created
entity_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
application_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id:
type: string
example: a7052919-e024-4985-bd08-856056b66f59
customer_id:
type: string
example: 1a2b3c4d5e6f
provider_name:
type: string
example: salesforce
object_name:
type: string
example: opportunity
object_type:
type: string
enum:
- standard
- custom
example: standard
result:
type: string
enum:
- SUCCESS
- ERROR
error_message:
type: string
example: Error message
required:
- webhook_event_type
- entity_id
- application_id
- connection_id
- customer_id
- provider_name
- result
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
entity.entity_mapping.updated:
post:
deprecated: true
summary: Entity mapping updated
description: Notification of an update to an entity mapping
operationId: entityEntityMappingUpdated
x-event-type: entity.entity_mapping.updated
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: entity.entity_mapping.updated
entity_id: e30cbb93-5b05-4186-b6de-1acc10013795
application_id: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id: a7052919-e024-4985-bd08-856056b66f59
customer_id: 1a2b3c4d5e6f
provider_name: salesforce
object_name: opportunity
object_type: standard
result: SUCCESS
schema:
type: object
properties:
webhook_event_type:
type: string
enum:
- entity.entity_mapping.updated
example: entity.entity_mapping.updated
entity_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
application_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id:
type: string
example: a7052919-e024-4985-bd08-856056b66f59
customer_id:
type: string
example: 1a2b3c4d5e6f
provider_name:
type: string
example: salesforce
object_name:
type: string
example: opportunity
object_type:
type: string
enum:
- standard
- custom
example: standard
result:
type: string
enum:
- SUCCESS
- ERROR
error_message:
type: string
example: Error message
required:
- webhook_event_type
- entity_id
- application_id
- connection_id
- customer_id
- provider_name
- result
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
entity.entity_mapping.deleted:
post:
deprecated: true
summary: Entity mapping deleted
description: Notification of the deletion of an entity mapping
operationId: entityEntityMappingDeleted
x-event-type: entity.entity_mapping.deleted
tags:
- Webhook Events
requestBody:
content:
application/json:
example:
webhook_event_type: entity.entity_mapping.deleted
entity_id: e30cbb93-5b05-4186-b6de-1acc10013795
application_id: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id: a7052919-e024-4985-bd08-856056b66f59
customer_id: 1a2b3c4d5e6f
provider_name: salesforce
object_name: opportunity
object_type: standard
result: SUCCESS
schema:
type: object
properties:
webhook_event_type:
type: string
enum:
- entity.entity_mapping.deleted
example: entity.entity_mapping.deleted
entity_id:
type: string
example: e30cbb93-5b05-4186-b6de-1acc10013795
application_id:
type: string
example: 7bfcc74d-c98b-49de-8e8f-3dc7a17273f6
connection_id:
type: string
example: a7052919-e024-4985-bd08-856056b66f59
customer_id:
type: string
example: 1a2b3c4d5e6f
provider_name:
type: string
example: salesforce
object_name:
type: string
example: opportunity
object_type:
type: string
enum:
- standard
- custom
example: standard
result:
type: string
enum:
- SUCCESS
- ERROR
error_message:
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/supaglue/refs/heads/main/openapi/supaglue-magic-links-api-openapi.yml