ngrok-api#
This is the official helper library for working with the ngrok HTTP API from Python.
Getting Started#
Installation#
pip install ngrok-api
Quickstart Example#
After you’ve installed the package, you’ll need an API key. Create one on the API Keys page of your ngrok dashboard.
In your application’s code, construct an Client object
with the API key. API services can be accessed as properties of the client
object. That’s it!
import ngrok
# construct the api client
client = ngrok.Client("<API KEY>")
# list all online tunnels
for t in client.tunnels.list():
print(t)
# create an ip policy the allows traffic from some subnets
policy = client.ip_policies.create()
for cidr in ["24.0.0.0/8", "12.0.0.0/8"]:
client.ip_policy_rules.create(cidr=cidr, ip_policy_id=policy.id, action="allow")
Automatic Paging#
The ngrok API pages all list resources but this library abstracts that away
from you. All response objects from any list() methods return an object that
implements an __iter__() method which will automatically fetch additional
pages for you.
import ngrok
client = ngrok.Client("<API KEY>")
# list all ip policies, transparently fetching additional
# pages for you if necessary
for p in client.ip_policies.list():
print(p)
Instance Methods#
Instance methods like update and delete can be invoked on an instance of an
API object itself as well as directly without needing to first fetch the object.
- ::
import ngrok
client = ngrok.Client(“<API KEY>”)
# update the metadata of a credential cred = client.credentials.get(“cr_1kYyunEyn6XHHlqyMBLrj5nxkoz”) cred.update(metadata=json.dumps({
“server_name”: “giraffe-1”,
}))
# or do it in single call cred = client.credentials.update(“cr_1kYyunEyn6XHHlqyMBLrj5nxkoz”, metadata=json.dumps({
“server_name”: “giraffe-1”,
}))
Error Handling#
The ngrok API returns detailed information when an API call fails. Consult the section on errors for additional details.
import ngrok
client = ngrok.Client("<API KEY>")
try:
policy = client.ip_policies.create()
client.ip_policy_rules.create(cidr="24.0.0.0/8", ip_policy_id=policy.id, action="not a valid action")
except ngrok.Error as e:
print("http status code", e.http_status_code)
print("ngrok error code", e.error_code)
print("ngrok error message", e.message)
print("optional additional error-specific details", e.details)
API Reference#
API
- Client
ClientClient.abuse_reportsClient.agent_ingressesClient.api_keysClient.application_sessionsClient.application_usersClient.backendsClient.bot_usersClient.certificate_authoritiesClient.credentialsClient.edge_modulesClient.edgesClient.endpointsClient.event_destinationsClient.event_sourcesClient.event_subscriptionsClient.ip_policiesClient.ip_policy_rulesClient.ip_restrictionsClient.reserved_addrsClient.reserved_domainsClient.secretsClient.ssh_certificate_authoritiesClient.ssh_credentialsClient.ssh_host_certificatesClient.ssh_user_certificatesClient.tls_certificatesClient.tunnel_sessionsClient.tunnelsClient.vaults
- Datatypes
APIKeyAPIKeyListAWSAuthAWSCredentialsAWSRoleAbuseReportAbuseReportHostnameAgentIngressAgentIngress.certificate_management_policyAgentIngress.certificate_management_statusAgentIngress.created_atAgentIngress.delete()AgentIngress.descriptionAgentIngress.domainAgentIngress.idAgentIngress.metadataAgentIngress.ns_targetsAgentIngress.region_domainsAgentIngress.update()AgentIngress.uri
AgentIngressCertJobAgentIngressCertPolicyAgentIngressCertStatusAgentIngressListApplicationSessionApplicationSession.application_userApplicationSession.browser_sessionApplicationSession.created_atApplicationSession.delete()ApplicationSession.edgeApplicationSession.endpointApplicationSession.expires_atApplicationSession.idApplicationSession.last_activeApplicationSession.public_urlApplicationSession.routeApplicationSession.uri
ApplicationSessionListApplicationUserApplicationUserListBotUserBotUserListBrowserSessionCertificateAuthorityCertificateAuthority.ca_pemCertificateAuthority.created_atCertificateAuthority.delete()CertificateAuthority.descriptionCertificateAuthority.extended_key_usagesCertificateAuthority.idCertificateAuthority.key_usagesCertificateAuthority.metadataCertificateAuthority.not_afterCertificateAuthority.not_beforeCertificateAuthority.subject_common_nameCertificateAuthority.update()CertificateAuthority.uri
CertificateAuthorityListCredentialCredentialListEndpointEndpoint.bindingsEndpoint.created_atEndpoint.delete()Endpoint.descriptionEndpoint.domainEndpoint.edgeEndpoint.hostEndpoint.hostportEndpoint.idEndpoint.metadataEndpoint.nameEndpoint.pooling_enabledEndpoint.portEndpoint.principalEndpoint.protoEndpoint.public_urlEndpoint.regionEndpoint.schemeEndpoint.tcp_addrEndpoint.traffic_policyEndpoint.tunnelEndpoint.tunnel_sessionEndpoint.typeEndpoint.update()Endpoint.updated_atEndpoint.upstream_protocolEndpoint.upstream_urlEndpoint.uriEndpoint.url
EndpointBackendEndpointBackendMutateEndpointCircuitBreakerEndpointCompressionEndpointIPPolicyEndpointIPPolicyMutateEndpointListEndpointMutualTLSEndpointMutualTLSMutateEndpointOAuthEndpointOAuthAmazonEndpointOAuthFacebookEndpointOAuthGitHubEndpointOAuthGitLabEndpointOAuthGoogleEndpointOAuthLinkedInEndpointOAuthMicrosoftEndpointOAuthProviderEndpointOAuthTwitchEndpointOIDCEndpointRequestHeadersEndpointResponseHeadersEndpointSAMLEndpointSAML.allow_idp_initiatedEndpointSAML.assertion_consumer_service_urlEndpointSAML.authorized_groupsEndpointSAML.cookie_prefixEndpointSAML.enabledEndpointSAML.entity_idEndpointSAML.force_authnEndpointSAML.idp_metadataEndpointSAML.inactivity_timeoutEndpointSAML.maximum_durationEndpointSAML.metadata_urlEndpointSAML.nameid_formatEndpointSAML.options_passthroughEndpointSAML.request_signing_certificate_pemEndpointSAML.single_logout_url
EndpointSAMLMutateEndpointSAMLMutate.allow_idp_initiatedEndpointSAMLMutate.authorized_groupsEndpointSAMLMutate.cookie_prefixEndpointSAMLMutate.enabledEndpointSAMLMutate.force_authnEndpointSAMLMutate.idp_metadataEndpointSAMLMutate.inactivity_timeoutEndpointSAMLMutate.maximum_durationEndpointSAMLMutate.nameid_formatEndpointSAMLMutate.options_passthrough
EndpointTLSTerminationEndpointTLSTerminationAtEdgeEndpointTrafficPolicyEndpointUserAgentFilterEndpointWebhookValidationEndpointWebsocketTCPConverterEventDestinationEventDestinationListEventSourceEventSourceListEventSourceReplaceEventSubscriptionEventSubscriptionListEventTargetEventTargetAzureLogsIngestionEventTargetCloudwatchLogsEventTargetDatadogEventTargetFirehoseEventTargetKinesisFailoverBackendFailoverBackendListHTTPResponseBackendHTTPResponseBackendListHTTPSEdgeHTTPSEdgeListHTTPSEdgeRouteHTTPSEdgeRoute.backendHTTPSEdgeRoute.circuit_breakerHTTPSEdgeRoute.compressionHTTPSEdgeRoute.created_atHTTPSEdgeRoute.delete()HTTPSEdgeRoute.descriptionHTTPSEdgeRoute.edge_idHTTPSEdgeRoute.idHTTPSEdgeRoute.ip_restrictionHTTPSEdgeRoute.matchHTTPSEdgeRoute.match_typeHTTPSEdgeRoute.metadataHTTPSEdgeRoute.oauthHTTPSEdgeRoute.oidcHTTPSEdgeRoute.request_headersHTTPSEdgeRoute.response_headersHTTPSEdgeRoute.samlHTTPSEdgeRoute.traffic_policyHTTPSEdgeRoute.update()HTTPSEdgeRoute.uriHTTPSEdgeRoute.user_agent_filterHTTPSEdgeRoute.webhook_verificationHTTPSEdgeRoute.websocket_tcp_converter
IPPolicyIPPolicyListIPPolicyRuleIPPolicyRuleListIPRestrictionIPRestrictionListIdentityProviderLocationRefReservedAddrReservedAddrListReservedDomainReservedDomain.acme_challenge_cname_targetReservedDomain.certificateReservedDomain.certificate_management_policyReservedDomain.certificate_management_statusReservedDomain.cname_targetReservedDomain.created_atReservedDomain.delete()ReservedDomain.descriptionReservedDomain.domainReservedDomain.idReservedDomain.metadataReservedDomain.regionReservedDomain.uri
ReservedDomainCertJobReservedDomainCertPolicyReservedDomainCertStatusReservedDomainListSSHCertificateAuthoritySSHCertificateAuthorityListSSHCredentialSSHCredentialListSSHHostCertificateSSHHostCertificate.certificateSSHHostCertificate.created_atSSHHostCertificate.delete()SSHHostCertificate.descriptionSSHHostCertificate.idSSHHostCertificate.key_typeSSHHostCertificate.metadataSSHHostCertificate.principalsSSHHostCertificate.public_keySSHHostCertificate.ssh_certificate_authority_idSSHHostCertificate.update()SSHHostCertificate.uriSSHHostCertificate.valid_afterSSHHostCertificate.valid_until
SSHHostCertificateListSSHUserCertificateSSHUserCertificate.certificateSSHUserCertificate.created_atSSHUserCertificate.critical_optionsSSHUserCertificate.delete()SSHUserCertificate.descriptionSSHUserCertificate.extensionsSSHUserCertificate.idSSHUserCertificate.key_typeSSHUserCertificate.metadataSSHUserCertificate.principalsSSHUserCertificate.public_keySSHUserCertificate.ssh_certificate_authority_idSSHUserCertificate.update()SSHUserCertificate.uriSSHUserCertificate.valid_afterSSHUserCertificate.valid_until
SSHUserCertificateListSecretSecretListStaticBackendStaticBackendListStaticBackendTLSTCPEdgeTCPEdgeListTLSCertificateTLSCertificate.certificate_pemTLSCertificate.created_atTLSCertificate.delete()TLSCertificate.descriptionTLSCertificate.extended_key_usagesTLSCertificate.idTLSCertificate.issued_atTLSCertificate.issuer_common_nameTLSCertificate.key_usagesTLSCertificate.metadataTLSCertificate.not_afterTLSCertificate.not_beforeTLSCertificate.private_key_typeTLSCertificate.serial_numberTLSCertificate.subject_alternative_namesTLSCertificate.subject_common_nameTLSCertificate.subject_countryTLSCertificate.subject_localityTLSCertificate.subject_organizationTLSCertificate.subject_organizational_unitTLSCertificate.subject_provinceTLSCertificate.update()TLSCertificate.uri
TLSCertificateListTLSCertificateSANsTLSEdgeTLSEdgeListTunnelTunnelGroupBackendTunnelGroupBackendListTunnelListTunnelSessionTunnelSessionListUserAgentVaultVaultListWeightedBackendWeightedBackendList
- Errors
Services
- Abuse Reports
- Agent Ingresses
- API Keys
- Application Sessions
- Application Users
- Tunnel Sessions
- Failover Backends
- HTTP Response Backends
- Static Backends
- Tunnel Group Backends
- Weighted Backends
- Bot Users
- Certificate Authorities
- Tunnel Credentials
- HTTPS Edge Routes
- HTTPS Edges
- HTTPS Edge Mutual TLS Module
- HTTPS Edge TLS Termination Module
- HTTPS Edge Route Backend Module
- HTTPS Edge Route IP Restriction Module
- HTTPS Edge Route Request Headers Module
- HTTPS Edge Route Response Headers Module
- HTTPS Edge Route Compression Module
- HTTPS Edge Route Circuit Breaker Module
- HTTPS Edge Route Webhook Verification Module
- HTTPS Edge Route OAuth Module
- HTTPS Edge Route SAML Module
- HTTPS Edge Route OIDC Module
- HTTPS Edge Route Websocket TCP Converter Module
- HTTPS Edge Route User Agent Filter Module
- HTTPS Edge Route Traffic Policy Module
- TCP Edges
- TCP Edge Backend Module
- TCP Edge IP Restriction Module
- TCP Edge Traffic Policy Module
- TLS Edges
- TLS Edge Backend Module
- TLS Edge IP Restriction Module
- TLS Edge Mutual TLS Module
- TLS Edge TLS Termination Module
- TLS Edge Traffic Policy Module
- Endpoints
- Event Destinations
- Event Subscriptions
- Event Sources
- IP Policies
- IP Policy Rules
- IP Restrictions
- Reserved Addresses
- Reserved Domains
- Secrets
- SSH Certificate Authorities
- SSH Credentials
- SSH Host Certificates
- SSH User Certificates
- TLS Certificates
- Tunnels
- Vaults