<!--
{
  "documentType" : "article",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/arkit-in-visionos-c-api",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "ARKit in visionOS C API"
}
-->

# ARKit in visionOS C API

Integrate ARKit with low-level libraries and functionality.

## Discussion

ARKit in visionOS includes a full C API for compatibility with C and Objective-C apps and frameworks.

## Topics

### Sessions

[`typedef NSObject<OS_ar_session> * ar_session_t;`](/documentation/ARKit/ar_session_t)

The main entry point for receiving data from ARKit.

[`extern ar_session_tar_session_create();`](/documentation/ARKit/ar_session_create)

Creates a new session.

[`extern ar_session_tar_session_create_with_device(ar_device_t device);`](/documentation/ARKit/ar_session_create_with_device)

Create a session connected to the specified device.

[`extern void ar_session_query_authorization_results(ar_session_t session, ar_authorization_type_t authorization_types, ar_authorization_results_handler_t results_handler);`](/documentation/ARKit/ar_session_query_authorization_results)

Checks whether the current session is authorized for particular authorization types without requesting authorization.

[`extern void ar_session_query_authorization_results_f(ar_session_t session, ar_authorization_type_t authorization_types, void *context, ar_authorization_results_handler_function_t results_handler_function);`](/documentation/ARKit/ar_session_query_authorization_results_f)

Checks whether the current session is authorized for particular authorization types without requesting authorization.

[`extern void ar_session_request_authorization(ar_session_t session, ar_authorization_type_t authorization_types, ar_authorization_results_handler_t results_handler);`](/documentation/ARKit/ar_session_request_authorization)

Requests authorization from the user to use the specified kinds of ARKit data.

[`extern void ar_session_request_authorization_f(ar_session_t session, ar_authorization_type_t authorization_types, void *context, ar_authorization_results_handler_function_t results_handler_function);`](/documentation/ARKit/ar_session_request_authorization_f)

Requests authorization from the user to use the specified kinds of ARKit data.

[`extern void ar_session_run(ar_session_t session, ar_data_providers_t data_providers);`](/documentation/ARKit/ar_session_run)

Runs a session with the data providers you supply.

[`extern void ar_session_set_authorization_update_handler(ar_session_t session, dispatch_queue_t authorization_update_queue, ar_authorization_update_handler_t authorization_update_handler);`](/documentation/ARKit/ar_session_set_authorization_update_handler)

Sets the handler for receiving updates in authorization status for a specific authorization type.

[`extern void ar_session_set_authorization_update_handler_f(ar_session_t session, dispatch_queue_t authorization_update_queue, void *context, ar_authorization_update_handler_function_t authorization_update_handler_function);`](/documentation/ARKit/ar_session_set_authorization_update_handler_f)

Sets the handler for receiving updates in authorization status for a specific authorization type.

[`extern ar_data_providers_tar_session_copy_data_providers(ar_session_t session);`](/documentation/ARKit/ar_session_copy_data_providers)

Get a copy of the collection of all data providers on this session.

[`extern void ar_session_set_data_provider_state_change_handler(ar_session_t session, dispatch_queue_t queue, ar_session_data_provider_state_change_handler_t data_provider_state_change_handler);`](/documentation/ARKit/ar_session_set_data_provider_state_change_handler)

Sets the handler for responding to a state change of one or more data providers.

[`extern void ar_session_set_data_provider_state_change_handler_f(ar_session_t session, dispatch_queue_t queue, void *context, ar_session_data_provider_state_change_handler_function_t data_provider_state_change_handler_function);`](/documentation/ARKit/ar_session_set_data_provider_state_change_handler_f)

Sets the handler function for responding to a state change of one or more data providers.

[`typedef void (^)(NSObject<OS_ar_data_providers> *, ar_data_provider_state_t, NSObject<OS_ar_error> *, NSObject<OS_ar_data_provider> *) ar_session_data_provider_state_change_handler_t;`](/documentation/ARKit/ar_session_data_provider_state_change_handler_t)

A handler that the session calls when one or more data providers associated with it change state.

[`extern void ar_session_stop(ar_session_t session);`](/documentation/ARKit/ar_session_stop)

Stops a session.

[`typedef NSObject<OS_ar_device> * ar_device_t;`](/documentation/ARKit/ar_device_t)

Represents a physical device that a session can be run on.

### Memory Management

[`extern void ar_release(void *object);`](/documentation/ARKit/ar_release-c.func)

Releases a reference count on an ARKit object.

[`extern void *ar_retain(void *object);`](/documentation/ARKit/ar_retain-c.func)

Adds a reference count to an ARKit object.

### Authorization

[`typedef enum { ... } ar_authorization_status_t;`](/documentation/ARKit/ar_authorization_status_t)

The authorization states for a type of ARKit data.

[`typedef enum { ... } ar_authorization_type_t;`](/documentation/ARKit/ar_authorization_type_t)

The authorization types you can request from ARKit.

[`extern ar_authorization_type_t ar_authorization_result_get_authorization_type(ar_authorization_result_t authorization_result);`](/documentation/ARKit/ar_authorization_result_get_authorization_type)

Gets the authorization type associated with an authorization result.

[`extern ar_authorization_status_t ar_authorization_result_get_status(ar_authorization_result_t authorization_result);`](/documentation/ARKit/ar_authorization_result_get_status)

Gets the authorization status associated with an authorization result.

[`extern void ar_authorization_results_enumerate_results(ar_authorization_results_t authorization_results, ar_authorization_results_enumerator_t authorization_results_enumerator);`](/documentation/ARKit/ar_authorization_results_enumerate_results)

Enumerates a collection of authorization results.

[`extern void ar_authorization_results_enumerate_results_f(ar_authorization_results_t authorization_results, void *context, ar_authorization_results_enumerator_function_t authorization_results_enumerator_function);`](/documentation/ARKit/ar_authorization_results_enumerate_results_f)

Enumerates a collection of authorization results.

[`extern size_t ar_authorization_results_get_count(ar_authorization_results_t authorization_results);`](/documentation/ARKit/ar_authorization_results_get_count)

Gets the number of authorization results in a collection.

[`ar_authorization_status_allowed`](/documentation/ARKit/ar_authorization_status_t/ar_authorization_status_allowed)

Your app has permission to use the associated kind of ARKit data.

[`ar_authorization_status_denied`](/documentation/ARKit/ar_authorization_status_t/ar_authorization_status_denied)

Your app doesn’t have permission to use the associated kind of ARKit data.

[`ar_authorization_status_not_determined`](/documentation/ARKit/ar_authorization_status_t/ar_authorization_status_not_determined)

Permission for your app to use the associated kind of ARKit data is undetermined.

[`typedef NSObject<OS_ar_authorization_result> * ar_authorization_result_t;`](/documentation/ARKit/ar_authorization_result_t)

An authorization result.

[`typedef _Bool (^)(NSObject<OS_ar_authorization_result> *) ar_authorization_results_enumerator_t;`](/documentation/ARKit/ar_authorization_results_enumerator_t)

A handler for enumerating a collection of authorization results.

[`typedef void (^)(NSObject<OS_ar_authorization_results> *, NSObject<OS_ar_error> *) ar_authorization_results_handler_t;`](/documentation/ARKit/ar_authorization_results_handler_t)

A handler to call upon completion of an authorization request.

[`typedef NSObject<OS_ar_authorization_results> * ar_authorization_results_t;`](/documentation/ARKit/ar_authorization_results_t)

A collection of authorization results.

[`typedef void (^)(NSObject<OS_ar_authorization_result> *) ar_authorization_update_handler_t;`](/documentation/ARKit/ar_authorization_update_handler_t)

A handler for receiving updates in authorization status for a specific authorization type.

[`typedef void (*)(void *, NSObject<OS_ar_authorization_results> *, NSObject<OS_ar_error> *) ar_authorization_results_handler_function_t;`](/documentation/ARKit/ar_authorization_results_handler_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_authorization_result> *) ar_authorization_update_handler_function_t;`](/documentation/ARKit/ar_authorization_update_handler_function_t)

[`typedef _Bool (*)(void *, NSObject<OS_ar_authorization_result> *) ar_authorization_results_enumerator_function_t;`](/documentation/ARKit/ar_authorization_results_enumerator_function_t)

### Anchors

[`extern void ar_anchor_get_identifier(ar_anchor_t anchor, uuid_t out_identifier);`](/documentation/ARKit/ar_anchor_get_identifier)

Gets the unique identifier that distinguishes this anchor from all other anchors.

[`extern CFTimeInterval ar_anchor_get_timestamp(ar_anchor_t anchor);`](/documentation/ARKit/ar_anchor_get_timestamp)

Gets the timestamp corresponding to the anchor.

[`extern simd_float4x4 ar_anchor_get_origin_from_anchor_transform(ar_anchor_t anchor);`](/documentation/ARKit/ar_anchor_get_origin_from_anchor_transform)

Gets the transform from the anchor to the origin coordinate system.

[`extern bool ar_trackable_anchor_is_tracked(ar_trackable_anchor_t anchor);`](/documentation/ARKit/ar_trackable_anchor_is_tracked)

Returns a Boolean value that indicates whether ARKit is tracking an anchor.

[`typedef NSObject<OS_ar_anchor> * ar_anchor_t;`](/documentation/ARKit/ar_anchor_t)

The identity, location, and orientation of an object in world space.

[`typedef NSObject<OS_ar_mesh_anchor> * ar_mesh_anchor_t;`](/documentation/ARKit/ar_mesh_anchor_t)

A surface’s position in a person’s surroundings.

[`typedef NSObject<OS_ar_mesh_anchors> * ar_mesh_anchors_t;`](/documentation/ARKit/ar_mesh_anchors_t)

A collection of mesh anchors.

[`typedef _Bool (^)(NSObject<OS_ar_mesh_anchor> *) ar_mesh_anchors_enumerator_t;`](/documentation/ARKit/ar_mesh_anchors_enumerator_t)

A handler for enumerating a collection of mesh anchors.

[`typedef NSObject<OS_ar_image_anchor> * ar_image_anchor_t;`](/documentation/ARKit/ar_image_anchor_t)

A 2D image’s position in a person’s surroundings.

[`typedef NSObject<OS_ar_image_anchors> * ar_image_anchors_t;`](/documentation/ARKit/ar_image_anchors_t)

A collection of image anchors.

[`typedef _Bool (^)(NSObject<OS_ar_image_anchor> *) ar_image_anchors_enumerator_t;`](/documentation/ARKit/ar_image_anchors_enumerator_t)

A handler for enumerating a collection of image anchors.

[`typedef NSObject<OS_ar_hand_anchor> * ar_hand_anchor_t;`](/documentation/ARKit/ar_hand_anchor_t)

A hand’s position in a person’s surroundings.

[`typedef NSObject<OS_ar_trackable_anchor> * ar_trackable_anchor_t;`](/documentation/ARKit/ar_trackable_anchor_t)

An anchor that can gain and lose its tracking state over the course of a session.

[`typedef NSObject<OS_ar_world_anchor> * ar_world_anchor_t;`](/documentation/ARKit/ar_world_anchor_t)

A fixed location in a person’s surroundings.

[`typedef NSObject<OS_ar_world_anchors> * ar_world_anchors_t;`](/documentation/ARKit/ar_world_anchors_t)

A collection of world anchors.

[`typedef _Bool (^)(NSObject<OS_ar_world_anchor> *) ar_world_anchors_enumerator_t;`](/documentation/ARKit/ar_world_anchors_enumerator_t)

A handler for enumerating a collection of world anchors.

[`typedef enum { ... } ar_world_anchor_sharing_availability_t;`](/documentation/ARKit/ar_world_anchor_sharing_availability_t)

Enumeration indicating the availability of world anchor sharing.

[`typedef NSObject<OS_ar_plane_anchor> * ar_plane_anchor_t;`](/documentation/ARKit/ar_plane_anchor_t)

An anchor that represents horizontal and vertical planes.

[`typedef NSObject<OS_ar_plane_anchors> * ar_plane_anchors_t;`](/documentation/ARKit/ar_plane_anchors_t)

A collection of plane anchors.

[`typedef _Bool (^)(NSObject<OS_ar_plane_anchor> *) ar_plane_anchors_enumerator_t;`](/documentation/ARKit/ar_plane_anchors_enumerator_t)

A handler for enumerating a collection of plane anchors.

[`typedef NSObject<OS_ar_plane_detection_provider> * ar_plane_detection_provider_t;`](/documentation/ARKit/ar_plane_detection_provider_t)

A source of live data about planes in a person’s surroundings.

[`typedef enum { ... } ar_hand_skeleton_joint_name_t;`](/documentation/ARKit/ar_hand_skeleton_joint_name_t)

An enumeration that describes hand joint names.

[`typedef enum { ... } ar_hand_anchor_query_status_t;`](/documentation/ARKit/ar_hand_anchor_query_status_t)

An enumeration that describes the status of a hand anchor query.

### Data providers

[`typedef enum { ... } ar_data_provider_state_t;`](/documentation/ARKit/ar_data_provider_state_t)

The possible states of a data provider.

[`extern ar_authorization_type_t ar_data_provider_get_required_authorization_type(ar_data_provider_t data_provider);`](/documentation/ARKit/ar_data_provider_get_required_authorization_type)

The kinds of authorization you need to use a particular data provider type.

[`extern ar_data_provider_state_t ar_data_provider_get_state(ar_data_provider_t data_provider);`](/documentation/ARKit/ar_data_provider_get_state)

Gets the current status of data coming from this provider.

[`typedef _Bool (^)(NSObject<OS_ar_data_provider> *) ar_data_providers_enumerator_t;`](/documentation/ARKit/ar_data_providers_enumerator_t)

A handler for enumerating a collection of data providers.

[`typedef NSObject<OS_ar_data_providers> * ar_data_providers_t;`](/documentation/ARKit/ar_data_providers_t)

A collection of data providers.

[`extern void ar_data_providers_add_data_provider(ar_data_providers_t data_providers, ar_data_provider_t data_provider_to_add);`](/documentation/ARKit/ar_data_providers_add_data_provider)

Adds a data provider to a collection.

[`extern void ar_data_providers_add_data_providers(ar_data_providers_t data_providers, ar_data_providers_t data_providers_to_add);`](/documentation/ARKit/ar_data_providers_add_data_providers)

Adds multiple data providers to a collection.

[`extern ar_data_providers_tar_data_providers_create();`](/documentation/ARKit/ar_data_providers_create)

Creates an empty collection of data providers.

[`extern ar_data_providers_tar_data_providers_create_with_data_providers(ar_data_provider_t data_provider, ...);`](/documentation/ARKit/ar_data_providers_create_with_data_providers)

Creates a collection of data providers that contains the data providers you supply.

[`extern void ar_data_providers_enumerate_data_providers_f(ar_data_providers_t data_providers, void *context, ar_data_providers_enumerator_function_t data_providers_enumerator_function);`](/documentation/ARKit/ar_data_providers_enumerate_data_providers_f)

Enumerates a collection of data providers.

[`extern size_t ar_data_providers_get_count(ar_data_providers_t data_providers);`](/documentation/ARKit/ar_data_providers_get_count)

Gets the number of data providers in a collection.

[`extern void ar_data_providers_enumerate_data_providers(ar_data_providers_t data_providers, ar_data_providers_enumerator_t data_providers_enumerator);`](/documentation/ARKit/ar_data_providers_enumerate_data_providers)

Enumerates a collection of data providers.

[`extern void ar_data_providers_remove_data_provider(ar_data_providers_t data_providers, ar_data_provider_t data_provider_to_remove);`](/documentation/ARKit/ar_data_providers_remove_data_provider)

Removes a data provider from a collection.

[`extern void ar_data_providers_remove_data_providers(ar_data_providers_t data_providers, ar_data_providers_t data_providers_to_remove);`](/documentation/ARKit/ar_data_providers_remove_data_providers)

Removes multiple data providers from a collection.

[`typedef _Bool (*)(void *, NSObject<OS_ar_data_provider> *) ar_data_providers_enumerator_function_t;`](/documentation/ARKit/ar_data_providers_enumerator_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_data_providers> *, ar_data_provider_state_t, NSObject<OS_ar_error> *, NSObject<OS_ar_data_provider> *) ar_session_data_provider_state_change_handler_function_t;`](/documentation/ARKit/ar_session_data_provider_state_change_handler_function_t)

A handler function that the session calls when one or more data providers associated with it change state.

[`typedef NSObject<OS_ar_data_provider> * ar_data_provider_t;`](/documentation/ARKit/ar_data_provider_t)

A source of live data from ARKit.

### Geometry

[`typedef enum { ... } ar_geometry_primitive_type_t;`](/documentation/ARKit/ar_geometry_primitive_type_t)

The kinds of geometry primitives that a geometry element can contain.

[`extern id<MTLBuffer>ar_geometry_element_get_buffer(ar_geometry_element_t geometry_element);`](/documentation/ARKit/ar_geometry_element_get_buffer)

Gets a Metal buffer that contains index data that defines the geometry of an object.

[`extern size_t ar_geometry_element_get_bytes_per_index(ar_geometry_element_t geometry_element);`](/documentation/ARKit/ar_geometry_element_get_bytes_per_index)

Gets the number of bytes that represent an index value.

[`extern size_t ar_geometry_element_get_count(ar_geometry_element_t geometry_element);`](/documentation/ARKit/ar_geometry_element_get_count)

Gets the number of primitives in the Metal buffer for a geometry element.

[`extern size_t ar_geometry_element_get_index_count_per_primitive(ar_geometry_element_t geometry_element);`](/documentation/ARKit/ar_geometry_element_get_index_count_per_primitive)

Gets the number of indices for each primitive.

[`extern ar_geometry_primitive_type_t ar_geometry_element_get_primitive_type(ar_geometry_element_t geometry_element);`](/documentation/ARKit/ar_geometry_element_get_primitive_type)

Gets the kind of primitive, lines or triangles, that a geometry element contains.

[`extern id<MTLBuffer>ar_geometry_source_get_buffer(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_buffer)

Gets a Metal buffer that contains per-vector data for a geometry source.

[`extern size_t ar_geometry_source_get_components_per_vector(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_components_per_vector)

Gets the number of scalar components in each vector in a geometry source.

[`extern size_t ar_geometry_source_get_count(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_count)

Gets the number of vectors in a geometry source.

[`extern MTLVertexFormat ar_geometry_source_get_format(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_format)

Gets the vertex format for data in a geometry source’s buffer.

[`extern size_t ar_geometry_source_get_offset(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_offset)

Gets the offset, in bytes, from the beginning of a geometry source’s buffer.

[`extern size_t ar_geometry_source_get_stride(ar_geometry_source_t geometry_source);`](/documentation/ARKit/ar_geometry_source_get_stride)

Gets the number of bytes between one vector and another in a geometry source’s buffer.

[`ar_geometry_primitive_type_line`](/documentation/ARKit/ar_geometry_primitive_type_t/ar_geometry_primitive_type_line)

Two vertices that connect to form a line.

[`ar_geometry_primitive_type_triangle`](/documentation/ARKit/ar_geometry_primitive_type_t/ar_geometry_primitive_type_triangle)

Three vertices that connect to form a triangle.

[`typedef NSObject<OS_ar_geometry_element> * ar_geometry_element_t;`](/documentation/ARKit/ar_geometry_element_t)

A container for vertex indices of lines or triangles.

[`typedef NSObject<OS_ar_geometry_source> * ar_geometry_source_t;`](/documentation/ARKit/ar_geometry_source_t)

A container for geometrical vector data.

[`typedef NSObject<OS_ar_mesh_geometry> * ar_mesh_geometry_t;`](/documentation/ARKit/ar_mesh_geometry_t)

The shapes that make up a mesh anchor.

[`typedef _Bool (*)(void *, NSObject<OS_ar_mesh_anchor> *) ar_mesh_anchors_enumerator_function_t;`](/documentation/ARKit/ar_mesh_anchors_enumerator_function_t)

### Plane detection

[`typedef enum { ... } ar_plane_alignment_t;`](/documentation/ARKit/ar_plane_alignment_t)

The kinds of alignment — horizontal or vertical — that a plane anchor can have.

[`typedef enum { ... } ar_plane_classification_t;`](/documentation/ARKit/ar_plane_classification_t)

The kinds of object classification a plane anchor can have.

[`ar_plane_classification_ceiling`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_ceiling)

A ceiling.

[`ar_plane_classification_door`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_door)

A door.

[`ar_plane_classification_floor`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_floor)

A floor.

[`ar_plane_classification_seat`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_seat)

A seat.

[`ar_plane_classification_status_not_available`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_status_not_available)

A plane classification is currently unavailable.

[`ar_plane_classification_status_undetermined`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_status_undetermined)

A plane classification is undetermined.

[`ar_plane_classification_status_unknown`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_status_unknown)

A plane classification isn’t one of the known classes.

[`ar_plane_classification_table`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_table)

A table.

[`ar_plane_classification_wall`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_wall)

A wall.

[`ar_plane_classification_window`](/documentation/ARKit/ar_plane_classification_t/ar_plane_classification_window)

A window.

[`extern ar_plane_alignment_t ar_plane_anchor_get_alignment(ar_plane_anchor_t plane_anchor);`](/documentation/ARKit/ar_plane_anchor_get_alignment)

Gets the alignment — horizontal or vertical — of a plane anchor relative to gravity.

[`extern ar_plane_geometry_tar_plane_anchor_get_geometry(ar_plane_anchor_t plane_anchor);`](/documentation/ARKit/ar_plane_anchor_get_geometry)

Gets the shape of a plane anchor.

[`extern ar_plane_classification_t ar_plane_anchor_get_plane_classification(ar_plane_anchor_t plane_anchor);`](/documentation/ARKit/ar_plane_anchor_get_plane_classification)

Gets the kind of real-world object that ARKit determines the plane anchor might be.

[`extern void ar_plane_anchors_enumerate_anchors(ar_plane_anchors_t plane_anchors, ar_plane_anchors_enumerator_t plane_anchors_enumerator);`](/documentation/ARKit/ar_plane_anchors_enumerate_anchors)

Enumerates a collection of plane anchors using the collection of plane anchors and the enumeratin handler you provide.

[`extern void ar_plane_anchors_enumerate_anchors_f(ar_plane_anchors_t plane_anchors, void *context, ar_plane_anchors_enumerator_function_t plane_anchors_enumerator_function);`](/documentation/ARKit/ar_plane_anchors_enumerate_anchors_f)

Enumerates a collection of plane anchors.

[`extern size_t ar_plane_anchors_get_count(ar_plane_anchors_t plane_anchors);`](/documentation/ARKit/ar_plane_anchors_get_count)

Gets the number of plane anchors in a collection.

[`extern ar_surface_classification_t ar_plane_anchor_get_surface_classification(ar_plane_anchor_t plane_anchor);`](/documentation/ARKit/ar_plane_anchor_get_surface_classification)

Get the surface classification of a plane anchor.

[`typedef NSObject<OS_ar_plane_detection_configuration> * ar_plane_detection_configuration_t;`](/documentation/ARKit/ar_plane_detection_configuration_t)

[`extern ar_plane_detection_provider_tar_plane_detection_provider_create(ar_plane_detection_configuration_t plane_detection_configuration);`](/documentation/ARKit/ar_plane_detection_provider_create)

Creates a plane detection provider for the types of planes you want to detect.

[`extern bool ar_plane_detection_provider_is_supported();`](/documentation/ARKit/ar_plane_detection_provider_is_supported)

Returns a Boolean value that indicates whether the current runtime environment supports plane detection providers.

[`extern ar_plane_extent_tar_plane_geometry_get_plane_extent(ar_plane_geometry_t plane_geometry);`](/documentation/ARKit/ar_plane_geometry_get_plane_extent)

Gets the size of a plane.

[`extern ar_geometry_source_tar_plane_geometry_get_mesh_vertices(ar_plane_geometry_t plane_geometry);`](/documentation/ARKit/ar_plane_geometry_get_mesh_vertices)

Gets the vertices in the mesh that describes a plane.

[`extern ar_geometry_element_tar_plane_geometry_get_mesh_faces(ar_plane_geometry_t plane_geometry);`](/documentation/ARKit/ar_plane_geometry_get_mesh_faces)

Gets the faces in the mesh that describes a plane.

[`extern ar_authorization_type_t ar_plane_detection_provider_get_required_authorization_type();`](/documentation/ARKit/ar_plane_detection_provider_get_required_authorization_type)

Gets the types of authorizations necessary for detecting planes.

[`extern ar_plane_detection_configuration_tar_plane_detection_configuration_create();`](/documentation/ARKit/ar_plane_detection_configuration_create)

Creates a plane detection configuration.

[`extern void ar_plane_detection_configuration_set_alignment(ar_plane_detection_configuration_t plane_detection_configuration, ar_plane_alignment_t alignment);`](/documentation/ARKit/ar_plane_detection_configuration_set_alignment)

Sets the plane alignments that you want the provider to detect.

[`extern void ar_plane_detection_provider_set_update_handler(ar_plane_detection_provider_t plane_detection_provider, dispatch_queue_t plane_detection_updates_queue, ar_plane_detection_update_handler_t plane_detection_update_handler);`](/documentation/ARKit/ar_plane_detection_provider_set_update_handler)

Sets the handler for receiving plane detection updates.

[`extern void ar_plane_detection_provider_set_update_handler_f(ar_plane_detection_provider_t plane_detection_provider, dispatch_queue_t plane_detection_updates_queue, void *context, ar_plane_detection_update_handler_function_t plane_detection_update_handler_function);`](/documentation/ARKit/ar_plane_detection_provider_set_update_handler_f)

Sets the handler for receiving plane detection updates using the plane detection provider and plane detection update queue you provide.

[`typedef NSObject<OS_ar_plane_extent> * ar_plane_extent_t;`](/documentation/ARKit/ar_plane_extent_t)

The size of a plane.

[`extern float ar_plane_extent_get_height(ar_plane_extent_t plane_extent);`](/documentation/ARKit/ar_plane_extent_get_height)

Gets the height of a plane.

[`extern simd_float4x4 ar_plane_extent_get_plane_anchor_from_plane_extent_transform(ar_plane_extent_t plane_extent);`](/documentation/ARKit/ar_plane_extent_get_plane_anchor_from_plane_extent_transform)

Gets the transform of a plane anchor from its extent transform.

[`extern float ar_plane_extent_get_width(ar_plane_extent_t plane_extent);`](/documentation/ARKit/ar_plane_extent_get_width)

Gets the width of a plane.

[`typedef NSObject<OS_ar_plane_geometry> * ar_plane_geometry_t;`](/documentation/ARKit/ar_plane_geometry_t)

The geometry of a plane anchor.

[`typedef void (^)(NSObject<OS_ar_plane_anchors> *, NSObject<OS_ar_plane_anchors> *, NSObject<OS_ar_plane_anchors> *) ar_plane_detection_update_handler_t;`](/documentation/ARKit/ar_plane_detection_update_handler_t)

A handler for receiving updates to plane anchors.

[`typedef _Bool (*)(void *, NSObject<OS_ar_plane_anchor> *) ar_plane_anchors_enumerator_function_t;`](/documentation/ARKit/ar_plane_anchors_enumerator_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_plane_anchors> *, NSObject<OS_ar_plane_anchors> *, NSObject<OS_ar_plane_anchors> *) ar_plane_detection_update_handler_function_t;`](/documentation/ARKit/ar_plane_detection_update_handler_function_t)

[`enum ARPlaneClassificationStatus : NSInteger;`](/documentation/ARKit/ARPlaneClassificationStatus)

Possible states of ARKit’s process for classifying plane anchors.

[`typedef enum { ... } ar_surface_classification_t;`](/documentation/ARKit/ar_surface_classification_t)

A value describing the classification of a surface.

### World tracking

[`extern ar_world_anchor_tar_world_anchor_create_with_origin_from_anchor_transform(simd_float4x4 origin_from_anchor_transform);`](/documentation/ARKit/ar_world_anchor_create_with_origin_from_anchor_transform)

Creates a world anchor from a position and orientation in world space.

[`extern bool ar_world_anchor_is_shared_with_nearby_participants(ar_world_anchor_t world_anchor);`](/documentation/ARKit/ar_world_anchor_is_shared_with_nearby_participants)

Check if a world anchor is marked to be shared with nearby participants.

[`extern ar_world_anchor_tar_world_anchor_shared_with_nearby_participants_create(simd_float4x4 origin_from_anchor_transform);`](/documentation/ARKit/ar_world_anchor_shared_with_nearby_participants_create)

Initialize a world anchor that should be shared with nearby participants.

[`typedef void (*)(void *, ar_world_anchor_sharing_availability_t) ar_world_anchor_sharing_availability_update_handler_function_t;`](/documentation/ARKit/ar_world_anchor_sharing_availability_update_handler_function_t)

Function pointer called when there is a change in world anchor sharing availability.

[`typedef void (^)(ar_world_anchor_sharing_availability_t) ar_world_anchor_sharing_availability_update_handler_t;`](/documentation/ARKit/ar_world_anchor_sharing_availability_update_handler_t)

A handler that the provider calls when there is a change in world anchor sharing availability.

[`typedef void (^)(NSObject<OS_ar_world_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_world_tracking_add_anchor_completion_handler_t;`](/documentation/ARKit/ar_world_tracking_add_anchor_completion_handler_t)

A handler to call upon completion of a request to add a world anchor.

[`typedef void (^)(NSObject<OS_ar_world_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_world_tracking_remove_anchor_completion_handler_t;`](/documentation/ARKit/ar_world_tracking_remove_anchor_completion_handler_t)

A handler to call upon completion of a request to remove a world anchor.

[`typedef void (^)(void *, _Bool, NSObject<OS_ar_error> *) ar_world_tracking_remove_all_anchors_completion_handler_function_t;`](/documentation/ARKit/ar_world_tracking_remove_all_anchors_completion_handler_function_t)

Function called when a request to remove all known world anchors has completed (successfully or not).

[`typedef void (^)(_Bool, NSObject<OS_ar_error> *) ar_world_tracking_remove_all_anchors_completion_handler_t;`](/documentation/ARKit/ar_world_tracking_remove_all_anchors_completion_handler_t)

Function called when a request to remove all known world anchors has completed (successfully or not).

[`typedef void (^)(NSObject<OS_ar_world_anchors> *, NSObject<OS_ar_world_anchors> *, NSObject<OS_ar_world_anchors> *) ar_world_tracking_anchor_update_handler_t;`](/documentation/ARKit/ar_world_tracking_anchor_update_handler_t)

A handler for receiving updates to world anchors.

[`extern ar_world_tracking_configuration_tar_world_tracking_configuration_create();`](/documentation/ARKit/ar_world_tracking_configuration_create)

Creates a world tracking configuration.

[`extern void ar_world_anchors_enumerate_anchors(ar_world_anchors_t world_anchors, ar_world_anchors_enumerator_t world_anchors_enumerator);`](/documentation/ARKit/ar_world_anchors_enumerate_anchors)

Enumerates a collection of world anchors.

[`extern void ar_world_anchors_enumerate_anchors_f(ar_world_anchors_t world_anchors, void *context, ar_world_anchors_enumerator_function_t world_anchors_enumerator_function);`](/documentation/ARKit/ar_world_anchors_enumerate_anchors_f)

Enumerates a collection of world anchors.

[`extern size_t ar_world_anchors_get_count(ar_world_anchors_t world_anchors);`](/documentation/ARKit/ar_world_anchors_get_count)

Gets the number of world anchors in the collection.

[`extern ar_world_tracking_provider_tar_world_tracking_provider_create(ar_world_tracking_configuration_t world_tracking_configuration);`](/documentation/ARKit/ar_world_tracking_provider_create)

Creates a world tracking provider.

[`extern bool ar_world_tracking_provider_is_supported();`](/documentation/ARKit/ar_world_tracking_provider_is_supported)

Returns a Boolean value that indicates whether the current runtime environment supports world tracking providers.

[`extern ar_device_anchor_query_status_t ar_world_tracking_provider_query_device_anchor_at_timestamp(ar_world_tracking_provider_t world_tracking_provider, CFTimeInterval timestamp, ar_device_anchor_t device_anchor);`](/documentation/ARKit/ar_world_tracking_provider_query_device_anchor_at_timestamp)

Queries the predicted pose of the current device at a given time.

[`extern void ar_world_tracking_provider_add_anchor(ar_world_tracking_provider_t world_tracking_provider, ar_world_anchor_t world_anchor, ar_world_tracking_add_anchor_completion_handler_t add_anchor_completion_handler);`](/documentation/ARKit/ar_world_tracking_provider_add_anchor)

Adds a world anchor you supply to the set of currently tracked anchors.

[`extern void ar_world_tracking_provider_add_anchor_f(ar_world_tracking_provider_t world_tracking_provider, ar_world_anchor_t world_anchor, void *context, ar_world_tracking_add_anchor_completion_handler_function_t add_anchor_completion_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_add_anchor_f)

Adds a world anchor you supply to the set of currently tracked anchors.

[`extern ar_authorization_type_t ar_world_tracking_provider_get_required_authorization_type();`](/documentation/ARKit/ar_world_tracking_provider_get_required_authorization_type)

Gets the types of authorizations required to track world anchors.

[`extern void ar_world_tracking_provider_set_anchor_update_handler(ar_world_tracking_provider_t world_tracking_provider, dispatch_queue_t world_tracking_updates_queue, ar_world_tracking_anchor_update_handler_t world_tracking_anchor_update_handler);`](/documentation/ARKit/ar_world_tracking_provider_set_anchor_update_handler)

Sets the handler for receiving world tracking updates.

[`extern void ar_world_tracking_provider_set_anchor_update_handler_f(ar_world_tracking_provider_t world_tracking_provider, dispatch_queue_t world_tracking_updates_queue, void *context, ar_world_tracking_anchor_update_handler_function_t world_tracking_anchor_update_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_set_anchor_update_handler_f)

Sets the handler for receiving world tracking updates.

[`extern void ar_world_tracking_provider_remove_anchor_with_identifier(ar_world_tracking_provider_t world_tracking_provider, uuid_t anchor_identifier, ar_world_tracking_remove_anchor_completion_handler_t remove_anchor_completion_handler);`](/documentation/ARKit/ar_world_tracking_provider_remove_anchor_with_identifier)

Removes a world anchor from a world tracking provider based on its ID.

[`extern void ar_world_tracking_provider_remove_anchor(ar_world_tracking_provider_t world_tracking_provider, ar_world_anchor_t world_anchor, ar_world_tracking_remove_anchor_completion_handler_t remove_anchor_completion_handler);`](/documentation/ARKit/ar_world_tracking_provider_remove_anchor)

Removes a world anchor from a world tracking provider.

[`extern void ar_world_tracking_provider_remove_anchor_f(ar_world_tracking_provider_t world_tracking_provider, ar_world_anchor_t world_anchor, void *context, ar_world_tracking_remove_anchor_completion_handler_function_t remove_anchor_completion_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_remove_anchor_f)

Removes a world anchor from a world tracking provider.

[`extern void ar_world_tracking_provider_remove_all_anchors(ar_world_tracking_provider_t world_tracking_provider, ar_world_tracking_remove_all_anchors_completion_handler_t remove_all_anchors_completion_handler);`](/documentation/ARKit/ar_world_tracking_provider_remove_all_anchors)

Removes all known world anchors from the world tracking provider asynchronously.

[`extern void ar_world_tracking_provider_remove_all_anchors_f(ar_world_tracking_provider_t world_tracking_provider, void *context, ar_world_tracking_remove_all_anchors_completion_handler_function_t remove_all_anchors_completion_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_remove_all_anchors_f)

Removes all known world anchors from the world tracking provider asynchronously.

[`extern void ar_world_tracking_provider_remove_anchor_with_identifier_f(ar_world_tracking_provider_t world_tracking_provider, uuid_t anchor_identifier, void *context, ar_world_tracking_remove_anchor_completion_handler_function_t remove_anchor_completion_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_remove_anchor_with_identifier_f)

Remove a world anchor from the world tracking provider using its identifier.

[`extern void ar_world_tracking_provider_set_world_anchor_sharing_availability_update_handler(ar_world_tracking_provider_t world_tracking_provider, dispatch_queue_t world_tracking_updates_queue, ar_world_anchor_sharing_availability_update_handler_t world_anchor_sharing_availability_update_handler);`](/documentation/ARKit/ar_world_tracking_provider_set_world_anchor_sharing_availability_update_handler)

Set the handler for receiving world anchor sharing availability updates.

[`extern void ar_world_tracking_provider_set_world_anchor_sharing_availability_update_handler_f(ar_world_tracking_provider_t world_tracking_provider, dispatch_queue_t world_tracking_updates_queue, void *context, ar_world_anchor_sharing_availability_update_handler_function_t world_anchor_sharing_availability_update_handler_function);`](/documentation/ARKit/ar_world_tracking_provider_set_world_anchor_sharing_availability_update_handler_f)

Set the function for receiving world anchor sharing availability updates

[`typedef NSObject<OS_ar_world_tracking_configuration> * ar_world_tracking_configuration_t;`](/documentation/ARKit/ar_world_tracking_configuration_t)

[`typedef NSObject<OS_ar_device_anchor> * ar_device_anchor_t;`](/documentation/ARKit/ar_device_anchor_t)

[`extern ar_device_anchor_tar_device_anchor_create();`](/documentation/ARKit/ar_device_anchor_create)

[`typedef enum { ... } ar_device_anchor_query_status_t;`](/documentation/ARKit/ar_device_anchor_query_status_t)

[`typedef _Bool (*)(void *, NSObject<OS_ar_world_anchor> *) ar_world_anchors_enumerator_function_t;`](/documentation/ARKit/ar_world_anchors_enumerator_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_world_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_world_tracking_add_anchor_completion_handler_function_t;`](/documentation/ARKit/ar_world_tracking_add_anchor_completion_handler_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_world_anchors> *, NSObject<OS_ar_world_anchors> *, NSObject<OS_ar_world_anchors> *) ar_world_tracking_anchor_update_handler_function_t;`](/documentation/ARKit/ar_world_tracking_anchor_update_handler_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_world_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_world_tracking_remove_anchor_completion_handler_function_t;`](/documentation/ARKit/ar_world_tracking_remove_anchor_completion_handler_function_t)

[`typedef NSObject<OS_ar_world_tracking_provider> * ar_world_tracking_provider_t;`](/documentation/ARKit/ar_world_tracking_provider_t)

A source of live data about the device pose and anchors in a person’s surroundings.

[`extern simd_float4x4 ar_world_anchor_get_origin_from_anchor_transform_with_correction(ar_world_anchor_t anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_world_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

[`typedef enum { ... } ar_camera_position_t;`](/documentation/ARKit/ar_camera_position_t)

An enumeration that describes possible camera positions.

[`typedef enum { ... } ar_camera_type_t;`](/documentation/ARKit/ar_camera_type_t)

An enumeration that describes camera types.

[`typedef enum { ... } ar_device_anchor_tracking_state_t;`](/documentation/ARKit/ar_device_anchor_tracking_state_t)

Values that describe the tracking states of a device anchor.

[`typedef enum { ... } ar_world_tracking_error_code_t;`](/documentation/ARKit/ar_world_tracking_error_code_t)

The error codes for errors that world tracking providers throw.

[`typedef enum { ... } ar_session_error_code_t;`](/documentation/ARKit/ar_session_error_code_t)

The error codes for ARKit sessions.

### Scene reconstruction

[`typedef NSObject<OS_ar_scene_reconstruction_configuration> * ar_scene_reconstruction_configuration_t;`](/documentation/ARKit/ar_scene_reconstruction_configuration_t)

[`typedef enum { ... } ar_scene_reconstruction_mode_t;`](/documentation/ARKit/ar_scene_reconstruction_mode_t)

The additional kinds of information you can request about a person’s surroundings.

[`extern ar_scene_reconstruction_provider_tar_scene_reconstruction_provider_create(ar_scene_reconstruction_configuration_t scene_reconstruction_configuration);`](/documentation/ARKit/ar_scene_reconstruction_provider_create)

Creates a provider that reconstructs the person’s surroundings.

[`extern bool ar_scene_reconstruction_provider_is_supported();`](/documentation/ARKit/ar_scene_reconstruction_provider_is_supported)

Returns a Boolean value that indicates whether the current runtime environment supports scene reconstruction providers.

[`extern ar_authorization_type_t ar_scene_reconstruction_provider_get_required_authorization_type();`](/documentation/ARKit/ar_scene_reconstruction_provider_get_required_authorization_type)

Gets the types of authorizations needed to run scene reconstruction.

[`extern ar_scene_reconstruction_configuration_tar_scene_reconstruction_configuration_create();`](/documentation/ARKit/ar_scene_reconstruction_configuration_create)

Creates a scene reconstruction configuration.

[`extern ar_scene_reconstruction_mode_t ar_scene_reconstruction_configuration_get_scene_reconstruction_mode(ar_scene_reconstruction_configuration_t scene_reconstruction_configuration);`](/documentation/ARKit/ar_scene_reconstruction_configuration_get_scene_reconstruction_mode)

Gets the scene reconstruction mode.

[`extern void ar_scene_reconstruction_configuration_set_scene_reconstruction_mode(ar_scene_reconstruction_configuration_t scene_reconstruction_configuration, ar_scene_reconstruction_mode_t scene_reconstruction_mode);`](/documentation/ARKit/ar_scene_reconstruction_configuration_set_scene_reconstruction_mode)

Sets the scene reconstruction mode.

[`extern void ar_scene_reconstruction_provider_set_update_handler(ar_scene_reconstruction_provider_t scene_reconstruction_provider, dispatch_queue_t scene_reconstruction_updates_queue, ar_scene_reconstruction_update_handler_t scene_reconstruction_update_handler);`](/documentation/ARKit/ar_scene_reconstruction_provider_set_update_handler)

Sets the handler for receiving scene reconstruction updates.

[`extern void ar_scene_reconstruction_provider_set_update_handler_f(ar_scene_reconstruction_provider_t scene_reconstruction_provider, dispatch_queue_t scene_reconstruction_updates_queue, void *context, ar_scene_reconstruction_update_handler_function_t scene_reconstruction_update_handler_function);`](/documentation/ARKit/ar_scene_reconstruction_provider_set_update_handler_f)

Sets the handler for receiving scene reconstruction updates.

[`typedef enum { ... } ar_mesh_classification_t;`](/documentation/ARKit/ar_mesh_classification_t)

The kinds of classification a mesh anchor can have.

[`extern ar_mesh_geometry_tar_mesh_anchor_get_geometry(ar_mesh_anchor_t mesh_anchor);`](/documentation/ARKit/ar_mesh_anchor_get_geometry)

Gets the shape of a mesh anchor.

[`extern void ar_mesh_anchors_enumerate_anchors(ar_mesh_anchors_t mesh_anchors, ar_mesh_anchors_enumerator_t mesh_anchors_enumerator);`](/documentation/ARKit/ar_mesh_anchors_enumerate_anchors)

Enumerates a collection of mesh anchors.

[`extern void ar_mesh_anchors_enumerate_anchors_f(ar_mesh_anchors_t mesh_anchors, void *context, ar_mesh_anchors_enumerator_function_t mesh_anchors_enumerator_function);`](/documentation/ARKit/ar_mesh_anchors_enumerate_anchors_f)

Enumerates a collection of mesh anchors.

[`extern size_t ar_mesh_anchors_get_count(ar_mesh_anchors_t mesh_anchors);`](/documentation/ARKit/ar_mesh_anchors_get_count)

Gets the number of mesh anchors in the collection.

[`extern simd_float4x4 ar_mesh_anchor_get_origin_from_anchor_transform_with_correction(ar_mesh_anchor_t anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_mesh_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

[`extern ar_geometry_source_tar_mesh_geometry_get_classification(ar_mesh_geometry_t mesh_geometry);`](/documentation/ARKit/ar_mesh_geometry_get_classification)

Gets the classification of each face in the mesh.

[`extern ar_geometry_element_tar_mesh_geometry_get_faces(ar_mesh_geometry_t mesh_geometry);`](/documentation/ARKit/ar_mesh_geometry_get_faces)

Gets the faces of the mesh.

[`extern ar_geometry_source_tar_mesh_geometry_get_normals(ar_mesh_geometry_t mesh_geometry);`](/documentation/ARKit/ar_mesh_geometry_get_normals)

Gets the normals of the mesh.

[`extern ar_geometry_source_tar_mesh_geometry_get_vertices(ar_mesh_geometry_t mesh_geometry);`](/documentation/ARKit/ar_mesh_geometry_get_vertices)

Gets the vertices of the mesh.

[`typedef NSObject<OS_ar_scene_reconstruction_provider> * ar_scene_reconstruction_provider_t;`](/documentation/ARKit/ar_scene_reconstruction_provider_t)

A source of live data about the shape of a person’s surroundings.

[`typedef void (^)(NSObject<OS_ar_mesh_anchors> *, NSObject<OS_ar_mesh_anchors> *, NSObject<OS_ar_mesh_anchors> *) ar_scene_reconstruction_update_handler_t;`](/documentation/ARKit/ar_scene_reconstruction_update_handler_t)

A handler for receiving updates to mesh anchors.

[`typedef void (*)(void *, NSObject<OS_ar_mesh_anchors> *, NSObject<OS_ar_mesh_anchors> *, NSObject<OS_ar_mesh_anchors> *) ar_scene_reconstruction_update_handler_function_t;`](/documentation/ARKit/ar_scene_reconstruction_update_handler_function_t)

### Hand tracking

[`typedef enum { ... } ar_hand_chirality_t;`](/documentation/ARKit/ar_hand_chirality_t)

The values identifying hand chirality.

[`extern ar_hand_anchor_tar_hand_anchor_create();`](/documentation/ARKit/ar_hand_anchor_create)

Creates a hand anchor.

[`extern ar_hand_chirality_t ar_hand_anchor_get_chirality(ar_hand_anchor_t hand_anchor);`](/documentation/ARKit/ar_hand_anchor_get_chirality)

Gets the value that indicates whether the hand is a left or right hand.

[`extern ar_hand_fidelity_t ar_hand_anchor_get_fidelity(ar_hand_anchor_t hand_anchor);`](/documentation/ARKit/ar_hand_anchor_get_fidelity)

Get the fidelity of the hand anchor.

[`extern simd_float4x4 ar_hand_anchor_get_origin_from_anchor_transform_with_correction(ar_hand_anchor_t hand_anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_hand_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

[`typedef NSObject<OS_ar_hand_tracking_configuration> * ar_hand_tracking_configuration_t;`](/documentation/ARKit/ar_hand_tracking_configuration_t)

[`extern ar_hand_tracking_provider_tar_hand_tracking_provider_create(ar_hand_tracking_configuration_t hand_tracking_configuration);`](/documentation/ARKit/ar_hand_tracking_provider_create)

A source of live data about the position of a person’s hands and hand joints.

[`extern bool ar_hand_tracking_provider_is_supported();`](/documentation/ARKit/ar_hand_tracking_provider_is_supported)

Returns a Boolean value that indicates whether the current runtime environment supports hand tracking providers.

[`extern bool ar_hand_tracking_provider_get_latest_anchors(ar_hand_tracking_provider_t hand_tracking_provider, ar_hand_anchor_t hand_anchor_left, ar_hand_anchor_t hand_anchor_right);`](/documentation/ARKit/ar_hand_tracking_provider_get_latest_anchors)

Fetches the most recent hand anchors for each hand.

[`extern ar_authorization_type_t ar_hand_tracking_provider_get_required_authorization_type();`](/documentation/ARKit/ar_hand_tracking_provider_get_required_authorization_type)

Gets the types of authorizations required to track hands.

[`extern ar_hand_tracking_configuration_tar_hand_tracking_configuration_create();`](/documentation/ARKit/ar_hand_tracking_configuration_create)

[`extern void ar_hand_tracking_provider_set_update_handler(ar_hand_tracking_provider_t hand_tracking_provider, dispatch_queue_t hand_anchor_updates_queue, ar_hand_tracking_update_handler_t hand_tracking_update_handler);`](/documentation/ARKit/ar_hand_tracking_provider_set_update_handler)

Sets the handler for receiving hand tracking updates.

[`extern void ar_hand_tracking_provider_set_update_handler_f(ar_hand_tracking_provider_t hand_tracking_provider, dispatch_queue_t hand_anchor_updates_queue, void *context, ar_hand_tracking_update_handler_function_t hand_tracking_update_handler_function);`](/documentation/ARKit/ar_hand_tracking_provider_set_update_handler_f)

Sets the handler for receiving hand tracking updates.

[`ar_hand_skeleton_joint_name_forearm_arm`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_forearm_arm)

[`ar_hand_skeleton_joint_name_forearm_wrist`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_forearm_wrist)

[`ar_hand_skeleton_joint_name_index_finger_intermediate_base`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_index_finger_intermediate_base)

[`ar_hand_skeleton_joint_name_index_finger_intermediate_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_index_finger_intermediate_tip)

[`ar_hand_skeleton_joint_name_index_finger_knuckle`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_index_finger_knuckle)

[`ar_hand_skeleton_joint_name_index_finger_metacarpal`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_index_finger_metacarpal)

[`ar_hand_skeleton_joint_name_index_finger_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_index_finger_tip)

[`ar_hand_skeleton_joint_name_little_finger_intermediate_base`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_little_finger_intermediate_base)

[`ar_hand_skeleton_joint_name_little_finger_intermediate_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_little_finger_intermediate_tip)

[`ar_hand_skeleton_joint_name_little_finger_knuckle`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_little_finger_knuckle)

[`ar_hand_skeleton_joint_name_little_finger_metacarpal`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_little_finger_metacarpal)

[`ar_hand_skeleton_joint_name_little_finger_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_little_finger_tip)

[`ar_hand_skeleton_joint_name_middle_finger_intermediate_base`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_middle_finger_intermediate_base)

[`ar_hand_skeleton_joint_name_middle_finger_intermediate_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_middle_finger_intermediate_tip)

[`ar_hand_skeleton_joint_name_middle_finger_knuckle`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_middle_finger_knuckle)

[`ar_hand_skeleton_joint_name_middle_finger_metacarpal`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_middle_finger_metacarpal)

[`ar_hand_skeleton_joint_name_middle_finger_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_middle_finger_tip)

[`ar_hand_skeleton_joint_name_ring_finger_intermediate_base`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_ring_finger_intermediate_base)

[`ar_hand_skeleton_joint_name_ring_finger_intermediate_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_ring_finger_intermediate_tip)

[`ar_hand_skeleton_joint_name_ring_finger_knuckle`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_ring_finger_knuckle)

[`ar_hand_skeleton_joint_name_ring_finger_metacarpal`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_ring_finger_metacarpal)

[`ar_hand_skeleton_joint_name_ring_finger_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_ring_finger_tip)

[`ar_hand_skeleton_joint_name_thumb_intermediate_base`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_thumb_intermediate_base)

[`ar_hand_skeleton_joint_name_thumb_intermediate_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_thumb_intermediate_tip)

[`ar_hand_skeleton_joint_name_thumb_knuckle`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_thumb_knuckle)

[`ar_hand_skeleton_joint_name_thumb_tip`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_thumb_tip)

[`ar_hand_skeleton_joint_name_wrist`](/documentation/ARKit/ar_hand_skeleton_joint_name_t/ar_hand_skeleton_joint_name_wrist)

[`ar_hand_chirality_left`](/documentation/ARKit/ar_hand_chirality_t/ar_hand_chirality_left)

A left hand.

[`ar_hand_chirality_right`](/documentation/ARKit/ar_hand_chirality_t/ar_hand_chirality_right)

A right hand.

[`typedef NSObject<OS_ar_hand_tracking_provider> * ar_hand_tracking_provider_t;`](/documentation/ARKit/ar_hand_tracking_provider_t)

A source of live data about the position of a person’s hands and hand joints.

[`typedef void (^)(NSObject<OS_ar_hand_anchor> *, NSObject<OS_ar_hand_anchor> *) ar_hand_tracking_update_handler_t;`](/documentation/ARKit/ar_hand_tracking_update_handler_t)

A handler for receiving updates to hand anchors.

[`typedef void (*)(void *, NSObject<OS_ar_hand_anchor> *, NSObject<OS_ar_hand_anchor> *) ar_hand_tracking_update_handler_function_t;`](/documentation/ARKit/ar_hand_tracking_update_handler_function_t)

[`typedef enum { ... } ar_hand_fidelity_t;`](/documentation/ARKit/ar_hand_fidelity_t)

Enum for hand fidelity.

### Image tracking

[`extern float ar_image_anchor_get_estimated_scale_factor(ar_image_anchor_t image_anchor);`](/documentation/ARKit/ar_image_anchor_get_estimated_scale_factor)

Gets the estimated scale factor between the tracked image’s physical size and the reference image’s size.

[`extern ar_reference_image_tar_image_anchor_get_reference_image(ar_image_anchor_t image_anchor);`](/documentation/ARKit/ar_image_anchor_get_reference_image)

Gets the reference image that this image anchor tracks.

[`extern void ar_image_anchors_enumerate_anchors(ar_image_anchors_t image_anchors, ar_image_anchors_enumerator_t image_anchors_enumerator);`](/documentation/ARKit/ar_image_anchors_enumerate_anchors)

Enumerates a collection of image anchors.

[`extern void ar_image_anchors_enumerate_anchors_f(ar_image_anchors_t image_anchors, void *context, ar_image_anchors_enumerator_function_t image_anchors_enumerator_function);`](/documentation/ARKit/ar_image_anchors_enumerate_anchors_f)

Enumerates a collection of image anchors.

[`extern size_t ar_image_anchors_get_count(ar_image_anchors_t image_anchors);`](/documentation/ARKit/ar_image_anchors_get_count)

Gets the number of image anchors in the collection.

[`extern ar_image_tracking_provider_tar_image_tracking_provider_create(ar_image_tracking_configuration_t image_tracking_configuration);`](/documentation/ARKit/ar_image_tracking_provider_create)

Creates an image tracking provider that tracks the reference images you supply.

[`extern bool ar_image_tracking_provider_is_supported();`](/documentation/ARKit/ar_image_tracking_provider_is_supported)

Returns a Boolean value that indicates whether the current runtime environment supports image tracking providers.

[`extern ar_authorization_type_t ar_image_tracking_provider_get_required_authorization_type();`](/documentation/ARKit/ar_image_tracking_provider_get_required_authorization_type)

Gets the types of authorizations required to track images.

[`extern void ar_image_tracking_provider_set_update_handler(ar_image_tracking_provider_t image_tracking_provider, dispatch_queue_t image_tracking_updates_queue, ar_image_tracking_update_handler_t image_tracking_update_handler);`](/documentation/ARKit/ar_image_tracking_provider_set_update_handler)

Sets the handler for receiving image tracking updates.

[`extern void ar_image_tracking_provider_set_update_handler_f(ar_image_tracking_provider_t image_tracking_provider, dispatch_queue_t image_tracking_updates_queue, void *context, ar_image_tracking_update_handler_function_t image_tracking_update_handler_function);`](/documentation/ARKit/ar_image_tracking_provider_set_update_handler_f)

Sets the handler for receiving image tracking updates.

[`extern void ar_image_tracking_configuration_add_reference_images(ar_image_tracking_configuration_t image_tracking_configuration, ar_reference_images_t reference_images);`](/documentation/ARKit/ar_image_tracking_configuration_add_reference_images)

Adds reference images to the set to be tracked.

[`extern ar_image_tracking_configuration_tar_image_tracking_configuration_create();`](/documentation/ARKit/ar_image_tracking_configuration_create)

Creates an image tracking configuration.

[`typedef NSObject<OS_ar_image_tracking_configuration> * ar_image_tracking_configuration_t;`](/documentation/ARKit/ar_image_tracking_configuration_t)

[`extern ar_image_anchors_tar_image_tracking_provider_copy_all_image_anchors(ar_image_tracking_provider_t image_tracking_provider);`](/documentation/ARKit/ar_image_tracking_provider_copy_all_image_anchors)

[`typedef NSObject<OS_ar_reference_images> * ar_reference_images_t;`](/documentation/ARKit/ar_reference_images_t)

A collection of reference images.

[`typedef _Bool (^)(NSObject<OS_ar_reference_image> *) ar_reference_images_enumerator_t;`](/documentation/ARKit/ar_reference_images_enumerator_t)

A handler for enumerating a collection of reference images.

[`extern void ar_reference_images_add_image(ar_reference_images_t reference_images, ar_reference_image_t image_to_add);`](/documentation/ARKit/ar_reference_images_add_image)

Adds a reference image to a collection.

[`extern void ar_reference_images_add_images(ar_reference_images_t reference_images, ar_reference_images_t images_to_add);`](/documentation/ARKit/ar_reference_images_add_images)

Adds multiple reference images to a collection.

[`extern ar_reference_images_tar_reference_images_create();`](/documentation/ARKit/ar_reference_images_create)

Creates an empty collection of reference images.

[`extern void ar_reference_images_enumerate_images(ar_reference_images_t reference_images, ar_reference_images_enumerator_t reference_images_enumerator);`](/documentation/ARKit/ar_reference_images_enumerate_images)

Enumerates a collection of reference images.

[`extern void ar_reference_images_enumerate_images_f(ar_reference_images_t reference_images, void *context, ar_reference_images_enumerator_function_t reference_images_enumerator_function);`](/documentation/ARKit/ar_reference_images_enumerate_images_f)

Enumerates a collection of reference images.

[`extern size_t ar_reference_images_get_count(ar_reference_images_t reference_images);`](/documentation/ARKit/ar_reference_images_get_count)

Gets the number of reference images in a collection.

[`extern ar_reference_images_tar_reference_images_load_reference_images_in_group(const char *group_name, CFBundleRef bundle);`](/documentation/ARKit/ar_reference_images_load_reference_images_in_group)

Creates multiple reference images based on their group name in an asset catalog.

[`extern ar_reference_image_tar_reference_image_create_from_cgimage(CGImageRef image, CGImagePropertyOrientation orientation, float physicalWidth);`](/documentation/ARKit/ar_reference_image_create_from_cgimage)

Creates a reference image from a Core Graphics image.

[`extern ar_reference_image_tar_reference_image_create_from_pixel_buffer(CVPixelBufferRef pixelBuffer, CGImagePropertyOrientation orientation, float physicalWidth);`](/documentation/ARKit/ar_reference_image_create_from_pixel_buffer)

Creates a reference image from a pixel buffer.

[`extern const char *ar_reference_image_get_name(ar_reference_image_t reference_image);`](/documentation/ARKit/ar_reference_image_get_name)

Gets the name of a reference image.

[`extern void ar_reference_image_set_name(ar_reference_image_t reference_image, const char *name);`](/documentation/ARKit/ar_reference_image_set_name)

Sets the name of a reference image.

[`extern float ar_reference_image_get_physical_height(ar_reference_image_t reference_image);`](/documentation/ARKit/ar_reference_image_get_physical_height)

Gets the height, in meters, of a reference image in the real world.

[`extern float ar_reference_image_get_physical_width(ar_reference_image_t reference_image);`](/documentation/ARKit/ar_reference_image_get_physical_width)

Gets the height, in meters, of a reference image in the real world.

[`typedef NSObject<OS_ar_image_tracking_provider> * ar_image_tracking_provider_t;`](/documentation/ARKit/ar_image_tracking_provider_t)

A source of live data about a 2D image’s position in a person’s surroundings.

[`typedef void (^)(NSObject<OS_ar_image_anchors> *, NSObject<OS_ar_image_anchors> *, NSObject<OS_ar_image_anchors> *) ar_image_tracking_update_handler_t;`](/documentation/ARKit/ar_image_tracking_update_handler_t)

A handler for receiving updates to image anchors.

[`typedef NSObject<OS_ar_reference_image> * ar_reference_image_t;`](/documentation/ARKit/ar_reference_image_t)

A 2D image the system uses as a reference to find the same image in a person’s surroundings.

[`typedef _Bool (*)(void *, NSObject<OS_ar_image_anchor> *) ar_image_anchors_enumerator_function_t;`](/documentation/ARKit/ar_image_anchors_enumerator_function_t)

[`typedef void (*)(void *, NSObject<OS_ar_image_anchors> *, NSObject<OS_ar_image_anchors> *, NSObject<OS_ar_image_anchors> *) ar_image_tracking_update_handler_function_t;`](/documentation/ARKit/ar_image_tracking_update_handler_function_t)

[`typedef _Bool (*)(void *, NSObject<OS_ar_reference_image> *) ar_reference_images_enumerator_function_t;`](/documentation/ARKit/ar_reference_images_enumerator_function_t)

[`extern simd_float4x4 ar_image_anchor_get_origin_from_anchor_transform_with_correction(ar_image_anchor_t image_anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_image_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

### Accessory tracking

[`typedef _Bool (*)(void *, NSObject<OS_ar_accessory> *) ar_accessories_enumerator_function_t;`](/documentation/ARKit/ar_accessories_enumerator_function_t)

Function for enumerating a collection of accessories.

[`typedef _Bool (^)(NSObject<OS_ar_accessory> *) ar_accessories_enumerator_t;`](/documentation/ARKit/ar_accessories_enumerator_t)

Handler for enumerating a collection of accessories.

[`typedef NSObject<OS_ar_accessories> * ar_accessories_t;`](/documentation/ARKit/ar_accessories_t)

A collection of accessories.

[`typedef NSObject<OS_ar_accessory_anchor> * ar_accessory_anchor_t;`](/documentation/ARKit/ar_accessory_anchor_t)

An anchor that represents an accessory.

[`typedef _Bool (*)(void *, NSObject<OS_ar_accessory_anchor> *) ar_accessory_anchors_enumerator_function_t;`](/documentation/ARKit/ar_accessory_anchors_enumerator_function_t)

Function for enumerating a collection of accessory anchors.

[`typedef _Bool (^)(NSObject<OS_ar_accessory_anchor> *) ar_accessory_anchors_enumerator_t;`](/documentation/ARKit/ar_accessory_anchors_enumerator_t)

Handler for enumerating a collection of accessory anchors.

[`typedef NSObject<OS_ar_accessory_anchors> * ar_accessory_anchors_t;`](/documentation/ARKit/ar_accessory_anchors_t)

A collection of accessory anchors.

[`typedef void (*)(void *, id<GCDevice>, _Bool, NSObject<OS_ar_error> *, NSObject<OS_ar_accessory> *) ar_accessory_device_load_completion_handler_function_t;`](/documentation/ARKit/ar_accessory_device_load_completion_handler_function_t)

Function triggered when a request to load an accessory from a `GCDevice` has completed.

[`typedef void (^)(id<GCDevice>, _Bool, NSObject<OS_ar_error> *, NSObject<OS_ar_accessory> *) ar_accessory_device_load_completion_handler_t;`](/documentation/ARKit/ar_accessory_device_load_completion_handler_t)

Handler triggered when a request to load an accessory from a `GCDevice` has completed.

[`typedef NSObject<OS_ar_accessory> * ar_accessory_t;`](/documentation/ARKit/ar_accessory_t)

An accessory that can be tracked in the physical environment, such as a game controller or stylus.

[`typedef NSObject<OS_ar_accessory_tracking_configuration> * ar_accessory_tracking_configuration_t;`](/documentation/ARKit/ar_accessory_tracking_configuration_t)

Configuration for accessory tracking.

[`typedef NSObject<OS_ar_accessory_tracking_provider> * ar_accessory_tracking_provider_t;`](/documentation/ARKit/ar_accessory_tracking_provider_t)

A data provider for accessory tracking.

[`typedef void (*)(void *, NSObject<OS_ar_accessory_anchors> *, NSObject<OS_ar_accessory_anchors> *, NSObject<OS_ar_accessory_anchors> *) ar_accessory_tracking_update_handler_function_t;`](/documentation/ARKit/ar_accessory_tracking_update_handler_function_t)

Function called when there are updates to accessory anchors.

[`typedef void (^)(NSObject<OS_ar_accessory_anchors> *, NSObject<OS_ar_accessory_anchors> *, NSObject<OS_ar_accessory_anchors> *) ar_accessory_tracking_update_handler_t;`](/documentation/ARKit/ar_accessory_tracking_update_handler_t)

Handler called when there are updates to accessory anchors.

[`extern const char * const ar_accessory_location_name_aim;`](/documentation/ARKit/ar_accessory_location_name_aim)

Pre-defined accessory location name for spatial gamepad and stylus aim point.

[`extern const char * const ar_accessory_location_name_grip;`](/documentation/ARKit/ar_accessory_location_name_grip)

Pre-defined accessory location name for spatial gamepad grip.

[`extern const char * const ar_accessory_location_name_grip_surface;`](/documentation/ARKit/ar_accessory_location_name_grip_surface)

Pre-defined accessory location name for spatial gamepad grip surface.

[`extern void ar_accessories_add_accessories(ar_accessories_t accessories, ar_accessories_t accessories_to_add);`](/documentation/ARKit/ar_accessories_add_accessories)

Add accessories to a collection.

[`extern void ar_accessories_add_accessory(ar_accessories_t accessories, ar_accessory_t accessory_to_add);`](/documentation/ARKit/ar_accessories_add_accessory)

Add an accessory to a collection.

[`extern ar_accessories_tar_accessories_create();`](/documentation/ARKit/ar_accessories_create)

Create an empty collection of accessories.

[`extern void ar_accessories_enumerate_accessories(ar_accessories_t accessories, ar_accessories_enumerator_t accessories_enumerator);`](/documentation/ARKit/ar_accessories_enumerate_accessories)

Enumerate a collection of accessories.

[`extern void ar_accessories_enumerate_accessories_f(ar_accessories_t accessories, void *context, ar_accessories_enumerator_function_t accessories_enumerator_function);`](/documentation/ARKit/ar_accessories_enumerate_accessories_f)

Enumerate a collection of reference objects.

[`extern size_t ar_accessories_get_count(ar_accessories_t accessories);`](/documentation/ARKit/ar_accessories_get_count)

Get the count of accessories in the collection.

[`extern void ar_accessories_remove_accessory(ar_accessories_t accessories, ar_accessory_t accessory_to_remove);`](/documentation/ARKit/ar_accessories_remove_accessory)

Remove an accessory from a collection.

[`extern void ar_accessories_remove_accessories(ar_accessories_t accessories, ar_accessories_t accessories_to_remove);`](/documentation/ARKit/ar_accessories_remove_accessories)

Remove accessories from a collection.

[`extern ar_accessory_anchor_tar_accessory_anchor_create();`](/documentation/ARKit/ar_accessory_anchor_create)

Create an uninitialized accessory anchor.

[`extern ar_accessory_tar_accessory_anchor_get_accessory(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_accessory)

Returns the accessory that is being tracked by the anchor.

[`extern simd_float4x4 ar_accessory_anchor_get_anchor_from_location_transform_with_correction(ar_accessory_anchor_t accessory_anchor, const char *location_name, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_accessory_anchor_get_anchor_from_location_transform_with_correction)

Get the transform from an anchor to the coordinate system of a location on the accessory.

[`extern simd_float3 ar_accessory_anchor_get_angular_velocity(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_angular_velocity)

Get the estimated angular velocity of the accessory in the local coordinate system.

[`extern ar_accessory_chirality_t ar_accessory_anchor_get_held_chirality(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_held_chirality)

Get the held state of this accessory anchor.

[`extern void ar_accessory_anchor_get_identifier(ar_accessory_anchor_t accessory_anchor, uuid_t out_identifier);`](/documentation/ARKit/ar_accessory_anchor_get_identifier)

Get the identifier of an anchor.

[`extern simd_float4x4 ar_accessory_anchor_get_origin_from_anchor_transform(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_origin_from_anchor_transform)

Get the transform from an anchor to the origin coordinate system.

[`extern simd_float4x4 ar_accessory_anchor_get_origin_from_anchor_transform_with_correction(ar_accessory_anchor_t accessory_anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_accessory_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

[`extern CFTimeInterval ar_accessory_anchor_get_timestamp(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_timestamp)

Get the timestamp corresponding to the accessory anchor.

[`extern ar_accessory_anchor_tracking_state_t ar_accessory_anchor_get_tracking_state(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_tracking_state)

Get the tracking state of the accessory anchor.

[`extern simd_float3 ar_accessory_anchor_get_velocity(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_get_velocity)

Get the estimated velocity of the accessory in the local coordinate system.

[`extern bool ar_accessory_anchor_is_equal_to_accessory_anchor(ar_accessory_anchor_t anchor, ar_accessory_anchor_t other_anchor);`](/documentation/ARKit/ar_accessory_anchor_is_equal_to_accessory_anchor)

Returns a Boolean value that indicates whether the two accessory anchors are equal.

[`extern bool ar_accessory_anchor_is_held(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_is_held)

Returns a Boolean value that indicates whether the accessory is held.

[`extern bool ar_accessory_anchor_is_tracked(ar_accessory_anchor_t accessory_anchor);`](/documentation/ARKit/ar_accessory_anchor_is_tracked)

Determine whether an accessory anchor is tracked.

[`extern void ar_accessory_anchors_enumerate_anchors(ar_accessory_anchors_t accessory_anchors, ar_accessory_anchors_enumerator_t accessory_anchors_enumerator);`](/documentation/ARKit/ar_accessory_anchors_enumerate_anchors)

Enumerate a collection of accessory anchors.

[`extern void ar_accessory_anchors_enumerate_anchors_f(ar_accessory_anchors_t accessory_anchors, void *context, ar_accessory_anchors_enumerator_function_t accessory_anchors_enumerator_function);`](/documentation/ARKit/ar_accessory_anchors_enumerate_anchors_f)

Enumerate a collection of acessory anchors.

[`extern size_t ar_accessory_anchors_get_count(ar_accessory_anchors_t accessory_anchors);`](/documentation/ARKit/ar_accessory_anchors_get_count)

Get the count of accessory anchors in the collection.

[`extern ar_strings_tar_accessory_copy_location_names(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_copy_location_names)

Gets the names of locations with pre-defined coordinate systems available for this accessory.

[`extern void ar_accessory_get_identifier(ar_accessory_t accessory, uuid_t out_identifier);`](/documentation/ARKit/ar_accessory_get_identifier)

Get identifier for the accessory.

[`extern ar_accessory_chirality_t ar_accessory_get_inherent_chirality(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_get_inherent_chirality)

Get inherent chirality for the accessory (what hand it is designed to be held in).

[`extern const char *ar_accessory_get_name(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_get_name)

Get an accessory’s name.

[`extern id<GCDevice>ar_accessory_get_source_device(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_get_source_device)

Gets the `GCDevice` that was used to initialize the accessory.

[`extern ar_accessory_source_type_t ar_accessory_get_source_type(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_get_source_type)

Gets type of source that was used to load an accessory.

[`extern CFURLRefar_accessory_get_usdz_file_path(ar_accessory_t accessory);`](/documentation/ARKit/ar_accessory_get_usdz_file_path)

Get path to a USDZ file for the accessory, if it has one.

[`extern bool ar_accessory_is_equal_to_accessory(ar_accessory_t accessory, ar_accessory_t other_accessory);`](/documentation/ARKit/ar_accessory_is_equal_to_accessory)

Indicates whether two accessories are equal.

[`extern void ar_accessory_load_from_device(id<GCDevice>device, ar_accessory_device_load_completion_handler_t completion_handler);`](/documentation/ARKit/ar_accessory_load_from_device)

Load an accessory from a `GCDevice`.

[`extern void ar_accessory_load_from_device_f(id<GCDevice>device, void *context, ar_accessory_device_load_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_accessory_load_from_device_f)

Load an accessory from a `GCDevice`.

[`extern ar_accessory_tracking_configuration_tar_accessory_tracking_configuration_create();`](/documentation/ARKit/ar_accessory_tracking_configuration_create)

Create an accessory tracking configuration.

[`extern void ar_accessory_tracking_configuration_set_accessories(ar_accessory_tracking_configuration_t configuration, ar_accessories_t accessories);`](/documentation/ARKit/ar_accessory_tracking_configuration_set_accessories)

Set accessories to track for the configuration.

[`extern ar_accessory_tracking_provider_tar_accessory_tracking_provider_create(ar_accessory_tracking_configuration_t accessory_tracking_configuration);`](/documentation/ARKit/ar_accessory_tracking_provider_create)

Create an accessory tracking provider.

[`extern ar_accessory_anchors_tar_accessory_tracking_provider_get_latest_anchors(ar_accessory_tracking_provider_t accessory_tracking_provider);`](/documentation/ARKit/ar_accessory_tracking_provider_get_latest_anchors)

Retrieves the latest anchors updated with the most recent inertial data.

[`extern ar_authorization_type_t ar_accessory_tracking_provider_get_required_authorization_type();`](/documentation/ARKit/ar_accessory_tracking_provider_get_required_authorization_type)

Get the authorization type required by the accessory tracking provider.

[`extern bool ar_accessory_tracking_provider_is_supported();`](/documentation/ARKit/ar_accessory_tracking_provider_is_supported)

Determines whether this device supports the accessory tracking provider.

[`extern bool ar_accessory_tracking_provider_predict_anchor_at_timestamp(ar_accessory_tracking_provider_t accessory_tracking_provider, ar_accessory_anchor_t anchor, CFTimeInterval timestamp, ar_accessory_anchor_t predicted_anchor);`](/documentation/ARKit/ar_accessory_tracking_provider_predict_anchor_at_timestamp)

Predict an accessory anchor to a target timestamp.

[`extern void ar_accessory_tracking_provider_set_update_handler(ar_accessory_tracking_provider_t accessory_tracking_provider, dispatch_queue_t accessory_tracking_updates_queue, ar_accessory_tracking_update_handler_t accessory_tracking_update_handler);`](/documentation/ARKit/ar_accessory_tracking_provider_set_update_handler)

Set the handler for receiving accessory anchor updates.

[`extern void ar_accessory_tracking_provider_set_update_handler_f(ar_accessory_tracking_provider_t accessory_tracking_provider, dispatch_queue_t accessory_tracking_updates_queue, void *context, ar_accessory_tracking_update_handler_function_t accessory_tracking_update_handler_function);`](/documentation/ARKit/ar_accessory_tracking_provider_set_update_handler_f)

Set the function for receiving accessory tracking updates.

[`extern void ar_accessory_tracking_provider_update_accessories(ar_accessory_tracking_provider_t accessory_tracking_provider, ar_accessories_t accessories, ar_accessory_tracking_update_accessories_completion_handler_t completion_handler);`](/documentation/ARKit/ar_accessory_tracking_provider_update_accessories)

Update the accessories being tracked by a provider.

[`extern void ar_accessory_tracking_provider_update_accessories_f(ar_accessory_tracking_provider_t accessory_tracking_provider, ar_accessories_t accessories, void *context, ar_accessory_tracking_update_accessories_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_accessory_tracking_provider_update_accessories_f)

Update the accessories being tracked by a provider.

[`typedef enum { ... } ar_accessory_anchor_tracking_state_t;`](/documentation/ARKit/ar_accessory_anchor_tracking_state_t)

Tracking status for accessory anchors.

[`typedef enum { ... } ar_accessory_chirality_t;`](/documentation/ARKit/ar_accessory_chirality_t)

The chirality of an accessory.

[`typedef enum { ... } ar_accessory_source_type_t;`](/documentation/ARKit/ar_accessory_source_type_t)

The type of input that was used to initialize an `ar_accessory_t`.

[`typedef enum { ... } ar_accessory_tracking_error_code_t;`](/documentation/ARKit/ar_accessory_tracking_error_code_t)

Error codes specific to accessory tracking.

[`typedef enum { ... } ar_transform_correction_t;`](/documentation/ARKit/ar_transform_correction_t)

A correction type to apply for transforms returned from ARKit APIs.

[`typedef void (*)(void *, _Bool, NSObject<OS_ar_error> *) ar_accessory_tracking_update_accessories_completion_handler_function_t;`](/documentation/ARKit/ar_accessory_tracking_update_accessories_completion_handler_function_t)

Function triggered when a request to update accessories has completed.

[`typedef void (^)(_Bool, NSObject<OS_ar_error> *) ar_accessory_tracking_update_accessories_completion_handler_t;`](/documentation/ARKit/ar_accessory_tracking_update_accessories_completion_handler_t)

Handler triggered when a request to update accessories has completed.

### Camera sampling

[`typedef _Bool (*)(void *, NSObject<OS_ar_camera_frame_sample> *) ar_camera_frame_sample_enumerator_function_t;`](/documentation/ARKit/ar_camera_frame_sample_enumerator_function_t)

Function for enumerating camera frame samples.

[`typedef _Bool (^)(NSObject<OS_ar_camera_frame_sample> *) ar_camera_frame_sample_enumerator_t;`](/documentation/ARKit/ar_camera_frame_sample_enumerator_t)

Handler for enumerating camera frame samples.

[`typedef NSObject<OS_ar_camera_frame_samples> * ar_camera_frame_samples_t;`](/documentation/ARKit/ar_camera_frame_samples_t)

A collection of camera frame samples.

[`extern ar_camera_frame_samples_tar_camera_frame_get_frame_samples(ar_camera_frame_t camera_frame);`](/documentation/ARKit/ar_camera_frame_get_frame_samples)

Get the collection of camera frame samples for this camera frame.

[`extern void ar_camera_frame_samples_enumerate_frame_samples(ar_camera_frame_samples_t camera_frame_samples, ar_camera_frame_sample_enumerator_t camera_frame_sample_enumerator);`](/documentation/ARKit/ar_camera_frame_samples_enumerate_frame_samples)

Enumerate all camera frame samples in this collection.

[`extern void ar_camera_frame_samples_enumerate_frame_samples_f(ar_camera_frame_samples_t camera_frame_samples, void *context, ar_camera_frame_sample_enumerator_function_t camera_frame_sample_enumerator_function);`](/documentation/ARKit/ar_camera_frame_samples_enumerate_frame_samples_f)

Enumerate all supported camera frame samples for this configuration using a function.

[`extern size_t ar_camera_frame_samples_get_count(ar_camera_frame_samples_t camera_frame_samples);`](/documentation/ARKit/ar_camera_frame_samples_get_count)

Get the count of camera frame samples in the collection.

[`extern ar_camera_rectification_type_t ar_camera_video_format_get_camera_rectification_type(ar_camera_video_format_t video_format);`](/documentation/ARKit/ar_camera_video_format_get_camera_rectification_type)

Get the camera rectification type for this video format.

[`typedef enum { ... } ar_camera_rectification_type_t;`](/documentation/ARKit/ar_camera_rectification_type_t)

A value describing the type of rectification applied to a video format.

### Camera region

[`typedef void (*)(void *, NSObject<OS_ar_camera_region_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_add_anchor_completion_handler_function_t;`](/documentation/ARKit/ar_camera_region_add_anchor_completion_handler_function_t)

Function called when a request to add a camera region anchor has completed (successfully or not).

[`typedef void (^)(NSObject<OS_ar_camera_region_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_add_anchor_completion_handler_t;`](/documentation/ARKit/ar_camera_region_add_anchor_completion_handler_t)

Handler called when a request to add a camera region anchor has completed (successfully or not).

[`typedef NSObject<OS_ar_camera_region_anchor> * ar_camera_region_anchor_t;`](/documentation/ARKit/ar_camera_region_anchor_t)

An anchor representing a camera region with enhanced image processing.

[`typedef void (*)(void *, NSObject<OS_ar_camera_region_anchor> *, NSObject<OS_ar_camera_region_anchor> *, NSObject<OS_ar_camera_region_anchor> *) ar_camera_region_anchor_update_handler_function_t;`](/documentation/ARKit/ar_camera_region_anchor_update_handler_function_t)

Function called when there are updates to a specific camera region anchor.

[`typedef void (^)(NSObject<OS_ar_camera_region_anchor> *, NSObject<OS_ar_camera_region_anchor> *, NSObject<OS_ar_camera_region_anchor> *) ar_camera_region_anchor_update_handler_t;`](/documentation/ARKit/ar_camera_region_anchor_update_handler_t)

Handler called when there are updates to a specific camera region anchor.

[`typedef _Bool (*)(void *, NSObject<OS_ar_camera_region_anchor> *) ar_camera_region_anchors_enumerator_function_t;`](/documentation/ARKit/ar_camera_region_anchors_enumerator_function_t)

Function for enumerating a collection of camera region anchors.

[`typedef _Bool (^)(NSObject<OS_ar_camera_region_anchor> *) ar_camera_region_anchors_enumerator_t;`](/documentation/ARKit/ar_camera_region_anchors_enumerator_t)

Handler for enumerating a collection of camera region anchors.

[`typedef NSObject<OS_ar_camera_region_anchors> * ar_camera_region_anchors_t;`](/documentation/ARKit/ar_camera_region_anchors_t)

A collection of camera region anchors.

[`typedef NSObject<OS_ar_camera_region_configuration> * ar_camera_region_configuration_t;`](/documentation/ARKit/ar_camera_region_configuration_t)

Configuration for camera region processing.

[`typedef NSObject<OS_ar_camera_region_provider> * ar_camera_region_provider_t;`](/documentation/ARKit/ar_camera_region_provider_t)

A data provider for camera region processing.

[`typedef void (*)(void *, NSObject<OS_ar_camera_region_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_remove_anchor_completion_handler_function_t;`](/documentation/ARKit/ar_camera_region_remove_anchor_completion_handler_function_t)

Function called when a request to remove a camera region anchor has completed (successfully or not).

[`typedef void (^)(NSObject<OS_ar_camera_region_anchor> *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_remove_anchor_completion_handler_t;`](/documentation/ARKit/ar_camera_region_remove_anchor_completion_handler_t)

Handler called when a request to remove a camera region anchor has completed (successfully or not).

[`typedef void (*)(void *, unsigned char *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_remove_anchor_with_identifier_completion_handler_function_t;`](/documentation/ARKit/ar_camera_region_remove_anchor_with_identifier_completion_handler_function_t)

Function called when a request to remove a camera region anchor by its identifier has completed (successfully or not).

[`typedef void (^)(unsigned char *, _Bool, NSObject<OS_ar_error> *) ar_camera_region_remove_anchor_with_identifier_completion_handler_t;`](/documentation/ARKit/ar_camera_region_remove_anchor_with_identifier_completion_handler_t)

Handler called when a request to remove a camera region anchor by its identifier has completed (successfully or not).

[`extern ar_camera_region_anchor_tar_camera_region_anchor_create_with_parameters(simd_float4x4 origin_from_anchor_transform, float width, float height, ar_camera_region_camera_enhancement_t camera_enhancement);`](/documentation/ARKit/ar_camera_region_anchor_create_with_parameters)

Create a camera region anchor using a transform from the anchor to the origin coordinate system, a specified size, and a camera enhancement.

[`extern ar_camera_region_camera_enhancement_t ar_camera_region_anchor_get_camera_enhancement(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_camera_enhancement)

Get the camera enhancement type for a given anchor.

[`extern float ar_camera_region_anchor_get_height(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_height)

Get the height of a given anchor.

[`extern void ar_camera_region_anchor_get_identifier(ar_camera_region_anchor_t camera_region_anchor, uuid_t out_identifier);`](/documentation/ARKit/ar_camera_region_anchor_get_identifier)

Get the identifier of an anchor.

[`extern simd_float4x4 ar_camera_region_anchor_get_origin_from_anchor_transform(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_origin_from_anchor_transform)

Get the transform from an anchor to the origin coordinate system.

[`extern CVPixelBufferRefar_camera_region_anchor_get_pixel_buffer(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_pixel_buffer)

Get the `CVPixelBufferRef` for this anchor.

[`extern CFTimeInterval ar_camera_region_anchor_get_timestamp(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_timestamp)

Get the timestamp corresponding to an anchor.

[`extern float ar_camera_region_anchor_get_width(ar_camera_region_anchor_t camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_get_width)

Get the width of a given anchor.

[`extern bool ar_camera_region_anchor_is_equal_to_camera_region_anchor(ar_camera_region_anchor_t camera_region_anchor, ar_camera_region_anchor_t other_camera_region_anchor);`](/documentation/ARKit/ar_camera_region_anchor_is_equal_to_camera_region_anchor)

Returns a bool value that indicates whether the two camera region anchors are equal.

[`extern void ar_camera_region_anchors_enumerate_anchors(ar_camera_region_anchors_t camera_region_anchors, ar_camera_region_anchors_enumerator_t camera_region_anchors_enumerator);`](/documentation/ARKit/ar_camera_region_anchors_enumerate_anchors)

Enumerate a collection of camera region anchors.

[`extern void ar_camera_region_anchors_enumerate_anchors_f(ar_camera_region_anchors_t camera_region_anchors, void *context, ar_camera_region_anchors_enumerator_function_t camera_region_anchors_enumerator_function);`](/documentation/ARKit/ar_camera_region_anchors_enumerate_anchors_f)

Enumerate a collection of camera region anchors using a function.

[`extern size_t ar_camera_region_anchors_get_count(ar_camera_region_anchors_t camera_region_anchors);`](/documentation/ARKit/ar_camera_region_anchors_get_count)

Get the count of camera region anchors in a collection.

[`extern ar_camera_region_configuration_tar_camera_region_configuration_create();`](/documentation/ARKit/ar_camera_region_configuration_create)

Create a camera region configuration.

[`extern void ar_camera_region_provider_add_camera_region_anchor(ar_camera_region_provider_t camera_region_provider, ar_camera_region_anchor_t camera_region_anchor, ar_camera_region_add_anchor_completion_handler_t add_anchor_completion_handler);`](/documentation/ARKit/ar_camera_region_provider_add_camera_region_anchor)

Add a camera region anchor to a camera region provider.

[`extern void ar_camera_region_provider_add_camera_region_anchor_f(ar_camera_region_provider_t camera_region_provider, ar_camera_region_anchor_t camera_region_anchor, void *context, ar_camera_region_add_anchor_completion_handler_function_t add_anchor_completion_handler_function);`](/documentation/ARKit/ar_camera_region_provider_add_camera_region_anchor_f)

Add a camera region anchor to an camera region provider using a function.

[`extern ar_camera_region_provider_tar_camera_region_provider_create(ar_camera_region_configuration_t camera_region_configuration);`](/documentation/ARKit/ar_camera_region_provider_create)

Create a camera region provider.

[`extern ar_authorization_type_t ar_camera_region_provider_get_required_authorization_type();`](/documentation/ARKit/ar_camera_region_provider_get_required_authorization_type)

Get the authorization type required by the camera region provider.

[`extern bool ar_camera_region_provider_is_supported();`](/documentation/ARKit/ar_camera_region_provider_is_supported)

Determine whether this device supports the camera region provider.

[`extern void ar_camera_region_provider_remove_camera_region_anchor(ar_camera_region_provider_t camera_region_provider, ar_camera_region_anchor_t camera_region_anchor, ar_camera_region_remove_anchor_completion_handler_t remove_anchor_completion_handler);`](/documentation/ARKit/ar_camera_region_provider_remove_camera_region_anchor)

Remove a camera region anchor from a camera region provider.

[`extern void ar_camera_region_provider_remove_camera_region_anchor_f(ar_camera_region_provider_t camera_region_provider, ar_camera_region_anchor_t camera_region_anchor, void *context, ar_camera_region_remove_anchor_completion_handler_function_t remove_anchor_completion_handler_function);`](/documentation/ARKit/ar_camera_region_provider_remove_camera_region_anchor_f)

Remove a camera region anchor from a camera region provider using a function.

[`extern void ar_camera_region_provider_remove_camera_region_anchor_with_identifier(ar_camera_region_provider_t camera_region_provider, uuid_t camera_region_anchor_identifier, ar_camera_region_remove_anchor_with_identifier_completion_handler_t remove_anchor_with_identifier_completion_handler);`](/documentation/ARKit/ar_camera_region_provider_remove_camera_region_anchor_with_identifier)

Remove a camera region anchor from a camera region provider by its identifier.

[`extern void ar_camera_region_provider_remove_camera_region_anchor_with_identifier_f(ar_camera_region_provider_t camera_region_provider, uuid_t camera_region_anchor_identifier, void *context, ar_camera_region_remove_anchor_with_identifier_completion_handler_function_t remove_anchor_with_identifier_completion_handler_function);`](/documentation/ARKit/ar_camera_region_provider_remove_camera_region_anchor_with_identifier_f)

Remove a camera region anchor from a camera region provider by its identifier using a function.

[`extern void ar_camera_region_provider_set_update_handler_for_anchor_with_identifier(ar_camera_region_provider_t camera_region_provider, uuid_t camera_region_anchor_identifier, dispatch_queue_t camera_region_anchor_updates_queue, ar_camera_region_anchor_update_handler_t camera_region_anchor_update_handler);`](/documentation/ARKit/ar_camera_region_provider_set_update_handler_for_anchor_with_identifier)

Set the handler for receiving camera region updates for a specific anchor identifier.

[`extern void ar_camera_region_provider_set_update_handler_for_anchor_with_identifier_f(ar_camera_region_provider_t camera_region_provider, uuid_t camera_region_anchor_identifier, dispatch_queue_t camera_region_anchor_updates_queue, void *context, ar_camera_region_anchor_update_handler_function_t camera_region_anchor_update_handler_function);`](/documentation/ARKit/ar_camera_region_provider_set_update_handler_for_anchor_with_identifier_f)

Set the function for receiving camera region updates for a specific anchor identifier.

[`typedef enum { ... } ar_camera_region_camera_enhancement_t;`](/documentation/ARKit/ar_camera_region_camera_enhancement_t)

Enum describing camera enhancement types.

[`typedef enum { ... } ar_camera_region_error_code_t;`](/documentation/ARKit/ar_camera_region_error_code_t)

Error codes specific to the camera region provider.

[`extern simd_float4x4 ar_camera_region_anchor_get_origin_from_anchor_transform_with_correction(ar_camera_region_anchor_t camera_region_anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_camera_region_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system.

### Coordinate spaces

[`typedef NSObject<OS_ar_coordinate_space_data> * ar_coordinate_space_data_t;`](/documentation/ARKit/ar_coordinate_space_data_t)

Data for sharing coordinate space information between participants.

[`extern CFDataRefar_coordinate_space_data_copy_cfdata(ar_coordinate_space_data_t data);`](/documentation/ARKit/ar_coordinate_space_data_copy_cfdata)

Copy out a `CFDataRef` that archives the coordinate space data.

[`extern ar_identifiers_tar_coordinate_space_data_copy_recipient_identifers(ar_coordinate_space_data_t shared_coordinate_space_data);`](/documentation/ARKit/ar_coordinate_space_data_copy_recipient_identifers)

Copy the list of participant identifiers of the intended recipient for this data. Data should be broadcast if the list is empty.

[`extern ar_coordinate_space_data_tar_coordinate_space_data_create_from_cfdata(CFDataRef cfData);`](/documentation/ARKit/ar_coordinate_space_data_create_from_cfdata)

Create and initialize an `ar_coordinate_space_data_t` object from a `CFDataRef`.

[`extern ar_identifiers_tar_coordinate_space_data_copy_recipient_identifiers(ar_coordinate_space_data_t shared_coordinate_space_data);`](/documentation/ARKit/ar_coordinate_space_data_copy_recipient_identifiers)

Copy the list of participant identifiers of the intended recipient for this data. Data should be broadcast if the list is empty.

### Shared coordinate spaces

[`typedef NSObject<OS_ar_shared_coordinate_space_configuration> * ar_shared_coordinate_space_configuration_t;`](/documentation/ARKit/ar_shared_coordinate_space_configuration_t)

Configuration for the shared coordinate space provider.

[`typedef void (*)(void *, NSObject<OS_ar_identifiers> *) ar_shared_coordinate_space_connected_participants_update_handler_function_t;`](/documentation/ARKit/ar_shared_coordinate_space_connected_participants_update_handler_function_t)

Function called when there are updates to the shared coordinate space participant status.

[`typedef void (^)(NSObject<OS_ar_identifiers> *) ar_shared_coordinate_space_connected_participants_update_handler_t;`](/documentation/ARKit/ar_shared_coordinate_space_connected_participants_update_handler_t)

A handler that the provider calls when there is an update to the shared coordinate space connected participants.

[`typedef NSObject<OS_ar_shared_coordinate_space_provider> * ar_shared_coordinate_space_provider_t;`](/documentation/ARKit/ar_shared_coordinate_space_provider_t)

A data provider for shared coordinate spaces across participants.

[`typedef void (^)(void *, _Bool) ar_shared_coordinate_space_sharing_status_update_handler_function_t;`](/documentation/ARKit/ar_shared_coordinate_space_sharing_status_update_handler_function_t)

Function called when there is an update to the shared coordinate space sharing status.

[`typedef void (^)(_Bool) ar_shared_coordinate_space_sharing_status_update_handler_t;`](/documentation/ARKit/ar_shared_coordinate_space_sharing_status_update_handler_t)

A handler that the provider calls when there is an update to the shared coordinate space sharing status.

[`extern void ar_shared_coordinate_provider_set_connected_participants_update_handler_f(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, dispatch_queue_t connected_participants_update_queue, void *context, ar_shared_coordinate_space_connected_participants_update_handler_function_t connected_participants_update_handler_function);`](/documentation/ARKit/ar_shared_coordinate_provider_set_connected_participants_update_handler_f)

Set the function for receiving shared coordinate space connected participants updates.

[`extern ar_shared_coordinate_space_configuration_tar_shared_coordinate_space_configuration_create();`](/documentation/ARKit/ar_shared_coordinate_space_configuration_create)

Create a shared coordinate space configuration.

[`extern ar_coordinate_space_data_tar_shared_coordinate_space_provider_copy_next_coordinate_space_data(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider);`](/documentation/ARKit/ar_shared_coordinate_space_provider_copy_next_coordinate_space_data)

Copy the next collaboration data.

[`extern ar_shared_coordinate_space_provider_tar_shared_coordinate_space_provider_create(ar_shared_coordinate_space_configuration_t shared_coordinate_space_configuration);`](/documentation/ARKit/ar_shared_coordinate_space_provider_create)

Create a shared coordinate space provider.

[`extern void ar_shared_coordinate_space_provider_get_participant_identifier(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, uuid_t out_identifier);`](/documentation/ARKit/ar_shared_coordinate_space_provider_get_participant_identifier)

Get the identifier used to identify the participant in the shared coordinate space.

[`extern ar_authorization_type_t ar_shared_coordinate_space_provider_get_required_authorization_type();`](/documentation/ARKit/ar_shared_coordinate_space_provider_get_required_authorization_type)

Get the authorization type required by the shared coordinate space provider.

[`extern bool ar_shared_coordinate_space_provider_is_supported();`](/documentation/ARKit/ar_shared_coordinate_space_provider_is_supported)

Determines whether this device supports the shared coordinate space provider.

[`extern void ar_shared_coordinate_space_provider_push_data(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, ar_coordinate_space_data_t coordinate_space_data);`](/documentation/ARKit/ar_shared_coordinate_space_provider_push_data)

Push data to the shared coordinate space provider.

[`extern void ar_shared_coordinate_space_provider_set_connected_participants_update_handler(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, dispatch_queue_t connected_participants_update_queue, ar_shared_coordinate_space_connected_participants_update_handler_t connected_participants_update_handler);`](/documentation/ARKit/ar_shared_coordinate_space_provider_set_connected_participants_update_handler)

Set the handler for receiving shared coordinate space connected participants updates.

[`extern void ar_shared_coordinate_space_provider_set_sharing_status_update_handler(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, dispatch_queue_t status_updates_queue, ar_shared_coordinate_space_sharing_status_update_handler_t sharing_status_update_handler);`](/documentation/ARKit/ar_shared_coordinate_space_provider_set_sharing_status_update_handler)

Set the handler for receiving sharing status updates.

[`extern void ar_shared_coordinate_space_provider_set_sharing_status_update_handler_f(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider, dispatch_queue_t status_updates_queue, void *context, ar_shared_coordinate_space_sharing_status_update_handler_function_t sharing_status_update_handler_function);`](/documentation/ARKit/ar_shared_coordinate_space_provider_set_sharing_status_update_handler_f)

Set the function for receiving sharing status updates.

[`extern bool ar_shared_coordinate_space_provider_is_sharing_enabled(ar_shared_coordinate_space_provider_t shared_coordinate_space_provider);`](/documentation/ARKit/ar_shared_coordinate_space_provider_is_sharing_enabled)

Get the latest sharing status.

### Rendering

[`typedef NSObject<OS_ar_stereo_properties_configuration> * ar_stereo_properties_configuration_t;`](/documentation/ARKit/ar_stereo_properties_configuration_t)

Configuration for the stereo properties provider.

[`typedef NSObject<OS_ar_stereo_properties_provider> * ar_stereo_properties_provider_t;`](/documentation/ARKit/ar_stereo_properties_provider_t)

A data provider that provides stereo viewpoint properties.

[`extern ar_stereo_properties_configuration_tar_stereo_properties_configuration_create();`](/documentation/ARKit/ar_stereo_properties_configuration_create)

Create a stereo properties configuration object.

[`extern ar_stereo_properties_provider_tar_stereo_properties_provider_create(ar_stereo_properties_configuration_t configuration);`](/documentation/ARKit/ar_stereo_properties_provider_create)

Create a stereo properties provider.

[`extern ar_authorization_type_t ar_stereo_properties_provider_get_required_authorization_type();`](/documentation/ARKit/ar_stereo_properties_provider_get_required_authorization_type)

Get the authorization type required by the stereo properties provider.

[`extern bool ar_stereo_properties_provider_get_viewpoint_properties(ar_stereo_properties_provider_t stereo_properties_provider, ar_viewpoint_properties_t viewpoint_properties);`](/documentation/ARKit/ar_stereo_properties_provider_get_viewpoint_properties)

Returns the latest viewpoint properties.

[`extern bool ar_stereo_properties_provider_is_supported();`](/documentation/ARKit/ar_stereo_properties_provider_is_supported)

Determines whether this device supports the stereo properties provider.

[`extern ar_viewpoint_properties_tar_viewpoint_properties_create();`](/documentation/ARKit/ar_viewpoint_properties_create)

Create an `ar_viewpoint_properties_t`.

[`extern simd_float4x4 ar_viewpoint_properties_get_device_from_left_viewpoint_transform(ar_viewpoint_properties_t viewpoint_properties);`](/documentation/ARKit/ar_viewpoint_properties_get_device_from_left_viewpoint_transform)

Get the transformation matrix that converts from the left viewpoint to the device’s coordinate space.

[`extern simd_float4x4 ar_viewpoint_properties_get_device_from_right_viewpoint_transform(ar_viewpoint_properties_t viewpoint_properties);`](/documentation/ARKit/ar_viewpoint_properties_get_device_from_right_viewpoint_transform)

Get the transformation matrix that converts from the right viewpoint to the device’s coordinate space.

[`typedef NSObject<OS_ar_viewpoint_properties> * ar_viewpoint_properties_t;`](/documentation/ARKit/ar_viewpoint_properties_t)

Properties describing the stereo viewpoints of the device.

### Visual fidelity

[`extern void ar_polygon_points_add_point(ar_polygon_points_t polygon_points, simd_float2 point);`](/documentation/ARKit/ar_polygon_points_add_point)

Adds a single point to the polygon points collection.

[`extern void ar_polygon_points_add_points(ar_polygon_points_t polygon_points, const simd_float2 *points, size_t point_count);`](/documentation/ARKit/ar_polygon_points_add_points)

Adds multiple points to the polygon points collection.

[`extern ar_polygon_points_tar_polygon_points_create();`](/documentation/ARKit/ar_polygon_points_create)

Creates a new empty polygon points collection.

[`extern size_t ar_polygon_points_get_count(ar_polygon_points_t polygon_points);`](/documentation/ARKit/ar_polygon_points_get_count)

Gets the number of points in the collection.

[`extern simd_float2 ar_polygon_points_get_point_at_index(ar_polygon_points_t polygon_points, size_t index);`](/documentation/ARKit/ar_polygon_points_get_point_at_index)

Gets a point at a specific index.

[`extern bool ar_polygon_points_is_equal_to_polygon_points(ar_polygon_points_t polygon_points, ar_polygon_points_t other_polygon_points);`](/documentation/ARKit/ar_polygon_points_is_equal_to_polygon_points)

Check if two polygon points collections are equal.

[`typedef NSObject<OS_ar_polygon_points> * ar_polygon_points_t;`](/documentation/ARKit/ar_polygon_points_t)

A collection of 2D polygon points.

[`typedef NSObject<OS_ar_reference_object_configuration> * ar_reference_object_configuration_t;`](/documentation/ARKit/ar_reference_object_configuration_t)

Defines a configuration for an individual reference object.

[`extern void ar_field_of_view_anchor_get_identifier(ar_field_of_view_anchor_t anchor, uuid_t out_identifier);`](/documentation/ARKit/ar_field_of_view_anchor_get_identifier)

Get the identifier of the field of view anchor.

[`extern ar_polygon_points_tar_field_of_view_anchor_get_left_polygon_points(ar_field_of_view_anchor_t anchor);`](/documentation/ARKit/ar_field_of_view_anchor_get_left_polygon_points)

Get the left eye polygon boundary points defining the preset FoV.

[`extern simd_float4x4 ar_field_of_view_anchor_get_origin_from_anchor_transform(ar_field_of_view_anchor_t anchor);`](/documentation/ARKit/ar_field_of_view_anchor_get_origin_from_anchor_transform)

Get the transform from the anchor to the origin coordinate system.

[`extern simd_float4x4 ar_field_of_view_anchor_get_origin_from_anchor_transform_with_correction(ar_field_of_view_anchor_t anchor, ar_transform_correction_t transform_correction);`](/documentation/ARKit/ar_field_of_view_anchor_get_origin_from_anchor_transform_with_correction)

Get the transform from an anchor to the origin coordinate system with a transform correction option.

[`extern ar_polygon_points_tar_field_of_view_anchor_get_right_polygon_points(ar_field_of_view_anchor_t anchor);`](/documentation/ARKit/ar_field_of_view_anchor_get_right_polygon_points)

Get the right eye polygon boundary points defining the preset FoV.

[`extern CFTimeInterval ar_field_of_view_anchor_get_timestamp(ar_field_of_view_anchor_t anchor);`](/documentation/ARKit/ar_field_of_view_anchor_get_timestamp)

Get the timestamp of the field of view anchor.

[`extern bool ar_field_of_view_anchor_is_equal_to_field_of_view_anchor(ar_field_of_view_anchor_t anchor, ar_field_of_view_anchor_t other_anchor);`](/documentation/ARKit/ar_field_of_view_anchor_is_equal_to_field_of_view_anchor)

Check if two field of view anchors are equal.

[`extern ar_field_of_view_tar_field_of_view_create_polygon(ar_polygon_points_t polygon_points);`](/documentation/ARKit/ar_field_of_view_create_polygon)

Create a polygon-based field of view.

[`extern ar_field_of_view_tar_field_of_view_create_preset_a();`](/documentation/ARKit/ar_field_of_view_create_preset_a)

Create a preset field of view A.

[`extern ar_field_of_view_tar_field_of_view_create_preset_b();`](/documentation/ARKit/ar_field_of_view_create_preset_b)

Create a preset field of view B.

[`extern ar_field_of_view_tar_field_of_view_create_preset_c();`](/documentation/ARKit/ar_field_of_view_create_preset_c)

Create a preset field of view C.

[`extern ar_field_of_view_tar_field_of_view_create_preset_d();`](/documentation/ARKit/ar_field_of_view_create_preset_d)

Create a preset field of view D.

[`extern bool ar_field_of_view_is_valid(ar_field_of_view_t field_of_view);`](/documentation/ARKit/ar_field_of_view_is_valid)

Validate whether a field of view specification is valid.

[`typedef NSObject<OS_ar_field_of_view_anchor> * ar_field_of_view_anchor_t;`](/documentation/ARKit/ar_field_of_view_anchor_t)

An anchor representing a set of field of view boundary polygon points in immersive space.

[`typedef void (*)(void *, NSObject<OS_ar_field_of_view_anchor> *) ar_field_of_view_anchor_update_handler_function_t;`](/documentation/ARKit/ar_field_of_view_anchor_update_handler_function_t)

Function called when a field of view anchor is updated.

[`typedef void (^)(NSObject<OS_ar_field_of_view_anchor> *) ar_field_of_view_anchor_update_handler_t;`](/documentation/ARKit/ar_field_of_view_anchor_update_handler_t)

Handler called when a field of view anchor is updated.

[`typedef NSObject<OS_ar_field_of_view> * ar_field_of_view_t;`](/documentation/ARKit/ar_field_of_view_t)

Field of view specification.

[`typedef NSObject<OS_ar_visual_fidelity_configuration> * ar_visual_fidelity_configuration_t;`](/documentation/ARKit/ar_visual_fidelity_configuration_t)

Configuration object for visual fidelity monitoring.

[`typedef NSObject<OS_ar_visual_fidelity_data> * ar_visual_fidelity_data_t;`](/documentation/ARKit/ar_visual_fidelity_data_t)

Visual fidelity data object containing device fit and field of view validation results.

[`typedef NSObject<OS_ar_visual_fidelity_provider> * ar_visual_fidelity_provider_t;`](/documentation/ARKit/ar_visual_fidelity_provider_t)

Data provider for visual fidelity monitoring.

[`typedef void (*)(void *, NSObject<OS_ar_visual_fidelity_data> *) ar_visual_fidelity_update_handler_function_t;`](/documentation/ARKit/ar_visual_fidelity_update_handler_function_t)

Function called when visual fidelity data is updated.

[`typedef void (^)(NSObject<OS_ar_visual_fidelity_data> *) ar_visual_fidelity_update_handler_t;`](/documentation/ARKit/ar_visual_fidelity_update_handler_t)

Handler called when visual fidelity data is updated.

[`extern ar_visual_fidelity_configuration_tar_visual_fidelity_configuration_create();`](/documentation/ARKit/ar_visual_fidelity_configuration_create)

Create a visual fidelity configuration.

[`extern void ar_visual_fidelity_configuration_set_field_of_view(ar_visual_fidelity_configuration_t visual_fidelity_configuration, ar_field_of_view_t field_of_view);`](/documentation/ARKit/ar_visual_fidelity_configuration_set_field_of_view)

Set the field of view specification to monitor.

[`extern void ar_visual_fidelity_configuration_set_present_coaching_alerts(ar_visual_fidelity_configuration_t visual_fidelity_configuration, bool present_coaching_alerts);`](/documentation/ARKit/ar_visual_fidelity_configuration_set_present_coaching_alerts)

Request whether coaching alerts should be automatically presented to the user.

[`extern void ar_visual_fidelity_configuration_set_request_device_fit_updates(ar_visual_fidelity_configuration_t visual_fidelity_configuration, bool request_device_fit_updates);`](/documentation/ARKit/ar_visual_fidelity_configuration_set_request_device_fit_updates)

Request whether device fit updates should be included in fidelity data.

[`extern ar_device_fit_status_t ar_visual_fidelity_data_get_device_fit_status(ar_visual_fidelity_data_t fidelity_data);`](/documentation/ARKit/ar_visual_fidelity_data_get_device_fit_status)

Get the device fit validation status.

[`extern bool ar_visual_fidelity_data_is_equal_to_visual_fidelity_data(ar_visual_fidelity_data_t fidelity_data, ar_visual_fidelity_data_t other_fidelity_data);`](/documentation/ARKit/ar_visual_fidelity_data_is_equal_to_visual_fidelity_data)

Check if two visual fidelity data instances are equal.

[`extern CFTimeInterval ar_visual_fidelity_data_get_timestamp(ar_visual_fidelity_data_t fidelity_data);`](/documentation/ARKit/ar_visual_fidelity_data_get_timestamp)

Get the timestamp when this validation data was captured.

[`extern bool ar_visual_fidelity_data_is_field_of_view_valid(ar_visual_fidelity_data_t fidelity_data);`](/documentation/ARKit/ar_visual_fidelity_data_is_field_of_view_valid)

Check if the field of view is valid.

[`extern bool ar_visual_fidelity_data_is_equal_to_visual_fidelity_data(ar_visual_fidelity_data_t fidelity_data, ar_visual_fidelity_data_t other_fidelity_data);`](/documentation/ARKit/ar_visual_fidelity_data_is_equal_to_visual_fidelity_data)

Check if two visual fidelity data instances are equal.

[`extern ar_visual_fidelity_provider_tar_visual_fidelity_provider_create(ar_visual_fidelity_configuration_t visual_fidelity_configuration);`](/documentation/ARKit/ar_visual_fidelity_provider_create)

Create a visual fidelity data provider.

[`extern ar_authorization_type_t ar_visual_fidelity_provider_get_required_authorization_type();`](/documentation/ARKit/ar_visual_fidelity_provider_get_required_authorization_type)

Get the authorization type required by the visual fidelity data provider.

[`extern bool ar_visual_fidelity_provider_is_supported();`](/documentation/ARKit/ar_visual_fidelity_provider_is_supported)

Determine whether this device supports the visual fidelity data provider.

[`extern void ar_visual_fidelity_provider_set_anchor_update_handler(ar_visual_fidelity_provider_t visual_fidelity_data_provider, dispatch_queue_t anchor_updates_queue, ar_field_of_view_anchor_update_handler_t anchor_update_handler);`](/documentation/ARKit/ar_visual_fidelity_provider_set_anchor_update_handler)

Set the handler for receiving field of view anchor updates.

[`extern void ar_visual_fidelity_provider_set_anchor_update_handler_f(ar_visual_fidelity_provider_t visual_fidelity_data_provider, dispatch_queue_t anchor_updates_queue, void *context, ar_field_of_view_anchor_update_handler_function_t anchor_update_handler_function);`](/documentation/ARKit/ar_visual_fidelity_provider_set_anchor_update_handler_f)

Set the function for receiving field of view anchor updates.

[`extern void ar_visual_fidelity_provider_set_update_handler(ar_visual_fidelity_provider_t visual_fidelity_data_provider, dispatch_queue_t fidelity_data_updates_queue, ar_visual_fidelity_update_handler_t fidelity_data_update_handler);`](/documentation/ARKit/ar_visual_fidelity_provider_set_update_handler)

Set the handler for receiving visual fidelity data updates.

[`extern void ar_visual_fidelity_provider_set_update_handler_f(ar_visual_fidelity_provider_t visual_fidelity_data_provider, dispatch_queue_t fidelity_data_updates_queue, void *context, ar_visual_fidelity_update_handler_function_t fidelity_data_update_handler_function);`](/documentation/ARKit/ar_visual_fidelity_provider_set_update_handler_f)

Set the function for receiving visual fidelity data updates.

[`typedef enum { ... } ar_device_fit_status_t;`](/documentation/ARKit/ar_device_fit_status_t)

Device fit validation status.

### Object tracking

[`extern ar_object_tracking_provider_tar_object_tracking_provider_create(ar_object_tracking_configuration_t object_tracking_configuration);`](/documentation/ARKit/ar_object_tracking_provider_create)

[`extern ar_object_anchors_tar_object_tracking_provider_copy_all_object_anchors(ar_object_tracking_provider_t object_tracking_provider);`](/documentation/ARKit/ar_object_tracking_provider_copy_all_object_anchors)

[`extern ar_authorization_type_t ar_object_tracking_provider_get_required_authorization_type();`](/documentation/ARKit/ar_object_tracking_provider_get_required_authorization_type)

[`extern bool ar_object_tracking_provider_is_supported();`](/documentation/ARKit/ar_object_tracking_provider_is_supported)

[`extern void ar_object_tracking_provider_set_update_handler(ar_object_tracking_provider_t object_tracking_provider, dispatch_queue_t object_tracking_updates_queue, ar_object_tracking_update_handler_t object_tracking_update_handler);`](/documentation/ARKit/ar_object_tracking_provider_set_update_handler)

[`extern void ar_object_tracking_provider_set_update_handler_f(ar_object_tracking_provider_t object_tracking_provider, dispatch_queue_t object_tracking_updates_queue, void *context, ar_object_tracking_update_handler_function_t object_tracking_update_handler_function);`](/documentation/ARKit/ar_object_tracking_provider_set_update_handler_f)

[`typedef enum { ... } ar_object_tracking_error_code_t;`](/documentation/ARKit/ar_object_tracking_error_code_t)

An enumeration that describes object tracking errors.

[`extern ar_reference_object_configuration_tar_reference_object_configuration_create();`](/documentation/ARKit/ar_reference_object_configuration_create)

Create a reference object configuration.

[`extern void ar_reference_object_configuration_enable_high_frame_rate_tracking(ar_reference_object_configuration_t reference_object_configuration, bool high_frame_rate_tracking_enabled);`](/documentation/ARKit/ar_reference_object_configuration_enable_high_frame_rate_tracking)

Sets whether high-frame-rate tracking is enabled on this configuration.

[`extern bool ar_reference_object_configuration_is_equal_to_reference_object_configuration(ar_reference_object_configuration_t reference_object_configuration, ar_reference_object_configuration_t other_reference_object_configuration);`](/documentation/ARKit/ar_reference_object_configuration_is_equal_to_reference_object_configuration)

Returns a bool value that indicates whether the two reference object configurations are equal.

[`extern bool ar_reference_object_configuration_is_high_frame_rate_tracking_enabled(ar_reference_object_configuration_t reference_object_configuration);`](/documentation/ARKit/ar_reference_object_configuration_is_high_frame_rate_tracking_enabled)

Checks whether high-frame-rate tracking is enabled on this configuration.

[`extern void ar_reference_object_load_from_url_with_configuration(CFURLRef url, ar_reference_object_configuration_t configuration, ar_reference_object_url_load_completion_handler_t completion_handler);`](/documentation/ARKit/ar_reference_object_load_from_url_with_configuration)

Load a reference object from a URL.

[`extern void ar_reference_object_load_from_url_with_configuration_f(CFURLRef url, ar_reference_object_configuration_t configuration, void *context, ar_reference_object_url_load_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_reference_object_load_from_url_with_configuration_f)

Load a reference object from a URL.

[`extern void ar_reference_object_load_with_name_and_configuration(const char *name, CFBundleRef bundle, ar_reference_object_configuration_t configuration, ar_reference_object_bundle_load_completion_handler_t completion_handler);`](/documentation/ARKit/ar_reference_object_load_with_name_and_configuration)

Load a reference object from a bundle.

[`extern void ar_reference_object_load_with_name_and_configuration_f(const char *name, CFBundleRef bundle, ar_reference_object_configuration_t configuration, void *context, ar_reference_object_bundle_load_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_reference_object_load_with_name_and_configuration_f)

Load a reference object from a bundle.

[`extern void ar_reference_object_load_from_url(CFURLRef url, ar_reference_object_url_load_completion_handler_t completion_handler);`](/documentation/ARKit/ar_reference_object_load_from_url)

[`extern void ar_reference_object_load_from_url_f(CFURLRef url, void *context, ar_reference_object_url_load_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_reference_object_load_from_url_f)

[`extern void ar_reference_object_load_with_name(const char *name, CFBundleRef bundle, ar_reference_object_bundle_load_completion_handler_t completion_handler);`](/documentation/ARKit/ar_reference_object_load_with_name)

[`extern void ar_reference_object_load_with_name_f(const char *name, CFBundleRef bundle, void *context, ar_reference_object_bundle_load_completion_handler_function_t completion_handler_function);`](/documentation/ARKit/ar_reference_object_load_with_name_f)

[`extern void ar_reference_objects_add_object(ar_reference_objects_t reference_objects, ar_reference_object_t object_to_add);`](/documentation/ARKit/ar_reference_objects_add_object)

[`extern void ar_reference_objects_add_objects(ar_reference_objects_t reference_objects, ar_reference_objects_t objects_to_add);`](/documentation/ARKit/ar_reference_objects_add_objects)

[`extern ar_reference_objects_tar_reference_objects_create();`](/documentation/ARKit/ar_reference_objects_create)

[`extern void ar_reference_objects_enumerate_objects(ar_reference_objects_t reference_objects, ar_reference_objects_enumerator_t reference_objects_enumerator);`](/documentation/ARKit/ar_reference_objects_enumerate_objects)

[`extern void ar_reference_objects_enumerate_objects_f(ar_reference_objects_t reference_objects, void *context, ar_reference_objects_enumerator_function_t reference_objects_enumerator_function);`](/documentation/ARKit/ar_reference_objects_enumerate_objects_f)

[`extern size_t ar_reference_objects_get_count(ar_reference_objects_t reference_objects);`](/documentation/ARKit/ar_reference_objects_get_count)

### Strings

[`typedef _Bool (*)(void *, const char *) ar_strings_enumerator_function_t;`](/documentation/ARKit/ar_strings_enumerator_function_t)

Function for enumerating a collection of strings.

[`typedef _Bool (^)(const char *) ar_strings_enumerator_t;`](/documentation/ARKit/ar_strings_enumerator_t)

Handler for enumerating a collection of strings.

[`typedef NSObject<OS_ar_strings> * ar_strings_t;`](/documentation/ARKit/ar_strings_t)

A collection of strings.

[`extern void ar_strings_enumerate_strings(ar_strings_t strings, ar_strings_enumerator_t strings_enumerator);`](/documentation/ARKit/ar_strings_enumerate_strings)

Enumerate a collection of strings.

[`extern void ar_strings_enumerate_strings_f(ar_strings_t strings, void *context, ar_strings_enumerator_function_t strings_enumerator_function);`](/documentation/ARKit/ar_strings_enumerate_strings_f)

Enumerate a collection of strings using a function.

[`extern size_t ar_strings_get_count(ar_strings_t strings);`](/documentation/ARKit/ar_strings_get_count)

Returns the number of strings in this collection.

### Objective-C compatibility

[ARKit Functions](/documentation/ARKit/arkit-functions)

[ARKit Data Types](/documentation/ARKit/arkit-data-types)

[Objective-C compatibility](/documentation/ARKit/objective-c-compatibility)

### Errors

[`typedef NSObject<OS_ar_error> * ar_error_t;`](/documentation/ARKit/ar_error_t)

An error reported by ARKit.

[`typedef intptr_t ar_error_code_t;`](/documentation/ARKit/ar_error_code_t)

Codes that identify errors in ARKit.

[`extern CFStringRef const ar_error_domain;`](/documentation/ARKit/ar_error_domain)

A string that indicates the error domain in Core Foundation.

[`extern ar_error_code_t ar_error_get_error_code(ar_error_t error);`](/documentation/ARKit/ar_error_get_error_code)

Gets the error code associated with an error.

[`extern CFErrorRefar_error_copy_cf_error(ar_error_t error);`](/documentation/ARKit/ar_error_copy_cf_error)

Copies a reference to a Core Foundation error object that represents the specified ARKit error.

[`#define AR_EXTERN_C_BEGIN`](/documentation/ARKit/AR_EXTERN_C_BEGIN)

[`#define AR_EXTERN_C_END`](/documentation/ARKit/AR_EXTERN_C_END)

## See Also

  <doc://com.apple.documentation/documentation/visionOS/setting-up-access-to-arkit-data>

[ARKit in iOS](/documentation/ARKit/arkit-in-ios)

Integrate iOS device camera and motion features to produce augmented reality experiences in your app or game.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)